app-starlock/star_lock/lib/versionUndate/versionUndateTool.dart

133 lines
4.6 KiB
Dart

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 '../network/api_repository.dart';
import '../tools/storage.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;
Get.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;
Get.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(
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(
child: Text(TranslationLoader.lanKeys!.sure!.tr),
onPressed: () async {
if (await canLaunch(versionUndateEntity.data!.appDownloadUrl!)) {
await launch(versionUndateEntity.data!.appDownloadUrl!);
} else {
throw 'Could not launch ${versionUndateEntity.data!.appDownloadUrl}';
}
},
),
]:
[
CupertinoDialogAction(
child: Text(TranslationLoader.lanKeys!.sure!.tr),
onPressed: () async {
if (await canLaunch(versionUndateEntity.data!.appDownloadUrl!)) {
await launch(versionUndateEntity.data!.appDownloadUrl!);
} else {
throw 'Could not launch ${versionUndateEntity.data!.appDownloadUrl}';
}
},
),
],
);
},
);
}
}