app-starlock/lib/versionUndate/versionUndateTool.dart

142 lines
5.1 KiB
Dart
Raw Normal View History

2024-04-03 11:46:43 +08:00
import 'dart:io';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:url_launcher/url_launcher.dart';
2024-04-26 15:38:59 +08:00
import '../app_settings/app_settings.dart';
import '../network/api_repository.dart';
import '../translations/trans_lib.dart';
import 'versionUndate_entity.dart';
class VersionUndateTool {
static VersionUndateTool? _manager;
VersionUndateTool._init() {
// _initLoadUpdateVersionData();
}
static VersionUndateTool? shareManager() {
_manager ??= VersionUndateTool._init();
_manager!._initLoadUpdateVersionData();
return _manager;
}
factory VersionUndateTool() => shareManager()!;
VersionUndateTool? get manager => shareManager();
void _initLoadUpdateVersionData() {
getVersionData();
}
// 获取版本号
void getVersionData() async {
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
String brandName = '';
if (Platform.isAndroid) {
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
2024-04-26 15:38:59 +08:00
AppLog.log('androidInfo.manufacturer:${androidInfo.manufacturer}'
'androidInfo.device:${androidInfo.device}'
'androidInfo.model:${androidInfo.model}'
'androidInfo.product:${androidInfo.product}'
'androidInfo.version.release:${androidInfo.version.release}'
'androidInfo.version.sdkInt:${androidInfo.version.sdkInt}'
'androidInfo.version.securityPatch:${androidInfo.version.securityPatch}'
'androidInfo.version.incremental:${androidInfo.version.incremental}'
'androidInfo.version.codename:${androidInfo.version.codename}'
'androidInfo.version.baseOS:${androidInfo.version.baseOS}'
'androidInfo.board:${androidInfo.board}'
'androidInfo.bootloader:${androidInfo.bootloader}');
brandName = androidInfo.manufacturer;
} else if (Platform.isIOS) {
IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
brandName = iosInfo.systemName!;
}
PackageInfo packageInfo = await PackageInfo.fromPlatform();
var version = packageInfo.version;
2024-04-26 15:38:59 +08:00
AppLog.log("updateGetversion:$version");
var entity = await ApiRepository.to.getVersionData(
brandName: brandName,
currentVersion: version,
);
if (entity.errorCode! == 0) {
if (entity.data!.isUpdate! == 1) {
showUpdateAlertDialog(entity);
}
}
}
void showUpdateAlertDialog(VersionUndateEntity versionUndateEntity) {
showCupertinoDialog(
context: Get.context!,
builder: (context) {
return CupertinoAlertDialog(
content: Column(
2024-04-10 13:36:00 +08:00
mainAxisSize: MainAxisSize.min,
children: [
Container(
// color: AppColors.mainColor,
alignment: Alignment.topCenter,
height: 50.h,
child: Text(
'版本更新',
style: TextStyle(fontSize: 28.sp, color: Colors.blue),
)),
Container(
padding: EdgeInsets.only(left: 20.w, right: 20.w, top: 10.h),
alignment: Alignment.centerLeft,
child: Text(versionUndateEntity.data!.description! ?? "",
textAlign: TextAlign.start,
style: TextStyle(fontSize: 20.sp))),
],
),
actions: versionUndateEntity.data!.isForceUpdate == 0
? [
CupertinoDialogAction(
child: Text("下次再说"),
onPressed: () {
Navigator.pop(context);
// Storage.setString(
// isShowUpdateVersion, isShowUpdateVersion);
},
),
CupertinoDialogAction(
2024-07-26 09:21:22 +08:00
child: Text('确定'.tr),
onPressed: () async {
if (await canLaunchUrl(Uri.parse(
versionUndateEntity.data!.appDownloadUrl!))) {
await launchUrl(Uri.parse(
versionUndateEntity.data!.appDownloadUrl!));
} else {
throw 'Could not launch ${versionUndateEntity.data!.appDownloadUrl}';
}
},
),
]
: [
CupertinoDialogAction(
2024-07-26 09:21:22 +08:00
child: Text('确定'.tr),
onPressed: () async {
if (await canLaunchUrl(Uri.parse(
versionUndateEntity.data!.appDownloadUrl!))) {
await launchUrl(Uri.parse(
versionUndateEntity.data!.appDownloadUrl!));
} else {
throw 'Could not launch ${versionUndateEntity.data!.appDownloadUrl}';
}
},
),
],
);
},
);
}
}