From 835bf79ab54ba2b5656eee266fa1b1017dd7c648 Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Fri, 20 Jun 2025 15:54:14 +0800 Subject: [PATCH] =?UTF-8?q?fix(version):=20=E4=BF=AE=E5=A4=8D=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E6=9B=B4=E6=96=B0=E6=A3=80=E6=9F=A5=E9=80=BB=E8=BE=91?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/services/version_update_service.dart | 35 ++++++++++--------- .../splash/controllers/splash_controller.dart | 2 +- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/lib/data/services/version_update_service.dart b/lib/data/services/version_update_service.dart index 5c62c0313..f0bf31f05 100644 --- a/lib/data/services/version_update_service.dart +++ b/lib/data/services/version_update_service.dart @@ -174,23 +174,26 @@ class VersionUpdateService extends GetxService { /// 比较版本号 /// 返回true表示需要更新(远程版本更高) - bool _compareVersions(String currentVersion, String remoteVersion) { - try { - final current = _parseVersion(currentVersion); - final remote = _parseVersion(remoteVersion); - - for (int i = 0; i < 3; i++) { - if (remote[i] > current[i]) { - return true; - } else if (remote[i] < current[i]) { - return false; - } - } - return false; // 版本相同 - } catch (e) { - _logger.e('版本比较失败: $e'); - return false; + bool _compareVersions(String current, String latest) { + // 拆分版本号与构建号 + final currentParts = current.split('+'); + final latestParts = latest.split('+'); + + // 解析版本号 (major.minor.patch) + final currentVersions = currentParts[0].split('.').map(int.parse).toList(); + final latestVersions = latestParts[0].split('.').map(int.parse).toList(); + + // 逐级比较版本号 + for (var i = 0; i < currentVersions.length; i++) { + if (latestVersions[i] > currentVersions[i]) return true; + if (latestVersions[i] < currentVersions[i]) return false; + } + + // 版本号相同则比较构建号 + if (latestParts.length > 1 && currentParts.length > 1) { + return int.parse(latestParts[1]) > int.parse(currentParts[1]); } + return false; } /// 解析版本号字符串为数字数组 diff --git a/lib/modules/splash/controllers/splash_controller.dart b/lib/modules/splash/controllers/splash_controller.dart index 5bd7eb027..de6a1d09e 100644 --- a/lib/modules/splash/controllers/splash_controller.dart +++ b/lib/modules/splash/controllers/splash_controller.dart @@ -160,7 +160,7 @@ class SplashController extends GetxController { /// 检查版本更新(后台执行,不阻塞启动流程) void _checkVersionUpdate() { // 延迟执行版本检查,避免影响启动速度 - Timer(const Duration(seconds: 2), () async { + Timer(const Duration(seconds: 1), () async { try { final versionService = VersionUpdateService.to; final updateInfo = await versionService.checkForUpdate();