40 lines
1.4 KiB
Dart
40 lines
1.4 KiB
Dart
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<String> v1Parts = version1.split('.');
|
||
List<String> 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;
|
||
}
|