Files
flutter_init_template/lib/widgets/version/check_version_update.dart
2026-03-10 13:36:40 +08:00

40 lines
1.4 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;
}