import 'package:app/core/config/global.dart'; import 'package:app/core/event/event_bus.dart'; import 'package:app/core/event/global_event.dart'; import 'package:app/core/utils/system.dart'; import 'package:app/data/api/common_api.dart'; import 'package:package_info_plus/package_info_plus.dart'; ///检查版本更新 void checkUpdate() async { PackageInfo packageInfo = await PackageInfo.fromPlatform(); var versionRes = await getAppVersionApi(isIos: !isAndroid()); //判断版本是不是小于最低版本,如果不是,不弹更新 bool isMin = _compareVersions(packageInfo.version, versionRes.lowVersion) == -1; if (!isMin) { return; } Future.delayed(const Duration(seconds: 2), () async { EventBus().publish(VersionUpdateEvent(versionRes)); }); } ///比较版本号 /// 1:表示当前版本号比传入的版本号高 /// -1:表示当前版本号比传入的版本号低 /// 0 表示版本号相同 int _compareVersions(String version1, String version2) { List v1Parts = version1.split('.'); List v2Parts = version2.split('.'); int length = v1Parts.length > v2Parts.length ? v1Parts.length : v2Parts.length; for (int i = 0; i < length; i++) { int v1Part = i < v1Parts.length ? int.tryParse(v1Parts[i]) ?? 0 : 0; int v2Part = i < v2Parts.length ? int.tryParse(v2Parts[i]) ?? 0 : 0; if (v1Part > v2Part) return 1; if (v1Part < v2Part) return -1; } return 0; }