Browse Source

应用版本信息自动从pubspec.yaml中获取更新

newdev_shunjiawei
lxm 2 years ago
parent
commit
d9c73b3775
  1. 22
      lib/modules/settings/controllers/settings_controller.dart
  2. 55
      lib/modules/settings/views/settings_view.dart
  3. 1
      pubspec.yaml

22
lib/modules/settings/controllers/settings_controller.dart

@ -13,6 +13,7 @@ import '../../../modules/login/controllers/facebookLogin.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'dart:io'; import 'dart:io';
import '../../../routes/app_routes.dart'; import '../../../routes/app_routes.dart';
import 'package:package_info_plus/package_info_plus.dart';
class SettingsController extends GetxController { class SettingsController extends GetxController {
// 语言设置 // 语言设置
@ -82,6 +83,10 @@ class SettingsController extends GetxController {
//final ImagePicker _picker = ImagePicker(); //final ImagePicker _picker = ImagePicker();
final Rx<User> userInfo = User.instance.obs; //使用单例实例 final Rx<User> userInfo = User.instance.obs; //使用单例实例
// 添加版本信息变量
final appVersion = ''.obs;
final buildNumber = ''.obs;
@override @override
void onInit() { void onInit() {
super.onInit(); super.onInit();
@ -102,6 +107,23 @@ class SettingsController extends GetxController {
//获取用户信息 //获取用户信息
loadUserInfo(); loadUserInfo();
// 获取应用版本信息
getAppVersion();
}
// 获取应用版本信息的方法
Future<void> getAppVersion() async {
try {
final PackageInfo packageInfo = await PackageInfo.fromPlatform();
appVersion.value = packageInfo.version;
buildNumber.value = packageInfo.buildNumber;
print('版本信息: ${packageInfo.version}+${packageInfo.buildNumber}');
} catch (e) {
appVersion.value = '未知';
buildNumber.value = '0';
print('获取版本信息失败: $e');
}
} }
void loadUserInfo() { void loadUserInfo() {

55
lib/modules/settings/views/settings_view.dart

@ -635,32 +635,43 @@ class SettingsView extends GetView<SettingsController> {
), ),
), ),
SizedBox(height: 2.h), SizedBox(height: 2.h),
Text( Obx(() => Text(
'${'versions'.tr} 2.4.1 (Build 87)', // 版本 // 如果版本信息为空,显示加载中
style: TextStyle( controller.appVersion.value.isEmpty
fontSize: 12.sp, ? '${'versions'.tr} 加载中...'
color: : '${'versions'.tr} ${controller.appVersion.value} (Build ${controller.buildNumber.value})',
isDarkMode ? Colors.white70 : Colors.black54, style: TextStyle(
), fontSize: 12.sp,
), color: isDarkMode
? Colors.white70
: Colors.black54,
),
)),
], ],
), ),
], ],
), ),
Container( InkWell(
padding: onTap: () {
EdgeInsets.symmetric(horizontal: 12.w, vertical: 6.h), print(controller.appVersion.value);
decoration: BoxDecoration( // 在这里添加检查更新的逻辑
color: isDarkMode },
? Colors.blue[900]!.withOpacity(0.3) child: Container(
: Colors.blue[100], padding:
borderRadius: BorderRadius.circular(16.r), EdgeInsets.symmetric(horizontal: 12.w, vertical: 6.h),
), decoration: BoxDecoration(
child: Text( color: isDarkMode
'checkUpdates'.tr, // 检查更新 ? Colors.blue[900]!.withOpacity(0.3)
style: TextStyle( : Colors.blue[100],
fontSize: 12.sp, borderRadius: BorderRadius.circular(16.r),
color: isDarkMode ? Colors.blue[300] : Colors.blue[600], ),
child: Text(
'checkUpdates'.tr, // 检查更新
style: TextStyle(
fontSize: 12.sp,
color:
isDarkMode ? Colors.blue[300] : Colors.blue[600],
),
), ),
), ),
), ),

1
pubspec.yaml

@ -32,6 +32,7 @@ dependencies:
just_audio: ^0.9.36 just_audio: ^0.9.36
webview_flutter: ^4.10.0 webview_flutter: ^4.10.0
flutter_easyloading: ^3.0.5 flutter_easyloading: ^3.0.5
package_info_plus: ^8.3.0
window_size: window_size:
git: git:

Loading…
Cancel
Save