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 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: [ 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 ? [ 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}'; } }, ), ] : [ 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}'; } }, ), ], ); }, ); } }