app-starlock/lib/versionUndate/versionUndateTool.dart
2024-10-19 09:38:57 +08:00

141 lines
5.2 KiB
Dart
Executable File

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';
import '../app_settings/app_settings.dart';
import '../network/api_repository.dart';
import 'versionUndate_entity.dart';
class VersionUndateTool {
factory VersionUndateTool() => shareManager()!;
VersionUndateTool._init() {
// _initLoadUpdateVersionData();
}
static VersionUndateTool? _manager;
static VersionUndateTool? shareManager() {
_manager ??= VersionUndateTool._init();
_manager!._initLoadUpdateVersionData();
return _manager;
}
VersionUndateTool? get manager => shareManager();
void _initLoadUpdateVersionData() {
getVersionData();
}
// 获取版本号
Future<void> getVersionData() async {
final DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
String brandName = '';
if (Platform.isAndroid) {
final AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
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) {
final IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
brandName = iosInfo.systemName!;
}
final PackageInfo packageInfo = await PackageInfo.fromPlatform();
final String version = packageInfo.version;
// AppLog.log("updateGetversion:$version");
final VersionUndateEntity 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: (BuildContext context) {
return CupertinoAlertDialog(
content: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Container(
// color: AppColors.mainColor,
alignment: Alignment.topCenter,
height: 50.h,
child: Text(
'版本更新'.tr,
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
? <Widget>[
CupertinoDialogAction(
child: Text('下次再说'.tr),
onPressed: () {
Navigator.pop(context);
// Storage.setString(
// isShowUpdateVersion, isShowUpdateVersion);
},
),
CupertinoDialogAction(
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}';
}
},
),
]
: <Widget>[
CupertinoDialogAction(
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}';
}
},
),
],
);
},
);
}
}