From bdf2e58d60b36c01db718b99c5a22531573cef1a Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Wed, 22 Oct 2025 19:15:37 +0800 Subject: [PATCH] =?UTF-8?q?fix(splash):=20=E4=BC=98=E5=8C=96=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E6=9B=B4=E6=96=B0=E5=BC=B9=E7=AA=97=E5=BC=B9=E5=87=BA?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=EF=BC=8C=E9=81=BF=E5=85=8D=E5=8D=A1=E4=BD=8F?= =?UTF-8?q?=E8=BF=9B=E7=A8=8B=20=E4=BC=98=E5=8C=96=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C=E9=A1=BA=E5=BA=8F=EF=BC=8C?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E6=9D=83=E9=99=90=E8=AF=B7=E6=B1=82=E4=B8=8E?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=BC=B9=E7=AA=97=E7=AB=9E=E4=BA=89=20?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81=E5=B9=B6?= =?UTF-8?q?=E6=94=B9=E8=BF=9B=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E7=9A=84=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../splash/controllers/splash_controller.dart | 47 ++++++++++--------- lib/modules/splash/views/splash_view.dart | 13 ++--- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/lib/modules/splash/controllers/splash_controller.dart b/lib/modules/splash/controllers/splash_controller.dart index 49454294b..60631b889 100644 --- a/lib/modules/splash/controllers/splash_controller.dart +++ b/lib/modules/splash/controllers/splash_controller.dart @@ -68,16 +68,15 @@ class SplashController extends GetxController { } /// 切换隐私政策同意状态 - 新增方法 - void togglePrivacyAcceptance() { - _hasAcceptedPrivacy.value = !_hasAcceptedPrivacy.value; - _storage.write('hasAcceptedPrivacy', _hasAcceptedPrivacy.value); - } + // void togglePrivacyAcceptance() { + // _hasAcceptedPrivacy.value = !_hasAcceptedPrivacy.value; + // _storage.write('hasAcceptedPrivacy', _hasAcceptedPrivacy.value); + // } /// 检查隐私政策,如果未同意,则显示弹窗并等待用户操作 /// 返回用户是否同意 Future _checkAndRequestPrivacy() async { - if (_storage.read('hasAcceptedPrivacy') ?? false) { - _hasAcceptedPrivacy.value = true; + if (_hasAcceptedPrivacy.value) { return true; } @@ -101,7 +100,6 @@ class SplashController extends GetxController { return completer.future; } - /// 网络连接检查 /// 网络连接检查 - 阻塞版本 Future _checkNetworkStatus() async { while (true) { @@ -196,11 +194,15 @@ class SplashController extends GetxController { //步骤2:检查网络连接状态 await _checkNetworkStatus(); // 同样使用 Future.wait,确保此函数在所有子任务完成后才结束 - await Future.wait([ - _requestTrackingPermissionAsync(), - _validateTokenAsync(), - _performVersionCheckAsync(), - ]); + // 先请求系统权限,避免与版本弹窗竞争 + await _requestTrackingPermissionAsync(); + await _performVersionCheckAsync(); + await _validateTokenAsync(); + //await Future.wait([ + //_requestTrackingPermissionAsync(), + //_validateTokenAsync(), + //_performVersionCheckAsync(), + //]); Logger.d(_tag, '所有后台任务已完成'); } @@ -242,22 +244,18 @@ class SplashController extends GetxController { if (updateInfo.hasUpdate) { Logger.i(_tag, '发现新版本: ${updateInfo.latestVersion}'); - final completer = Completer(); - // 在主线程中显示更新对话框 - WidgetsBinding.instance.addPostFrameCallback((_) { - // 使用 whenComplete 确保无论弹窗如何关闭,Future 都会完成 - VersionUpdateDialog.show(updateInfo).whenComplete(() { - if (!completer.isCompleted) completer.complete(); - }); - }); - // 等待弹窗交互结束 - await completer.future; + // 等待到下一微任务,降低与其它 UI 的并发竞争 + await Future.delayed(Duration.zero); + try { + await VersionUpdateDialog.show(updateInfo); + } catch (e) { + Logger.e(_tag, '更新弹窗显示失败: $e'); + } } else { Logger.i(_tag, '当前已是最新版本'); } } catch (e) { Logger.e(_tag, '版本检查失败: $e'); - // 即使检查失败,也视为任务完成 } } @@ -278,8 +276,11 @@ class SplashController extends GetxController { Future getLoginToken() async { try { final appVersion = versionService.cachedAppVersion; + final channel = versionService.cachedChannel; + Logger.i(_tag, 'Token登录请求: version=$appVersion, channel=$channel'); final response = await Api.tokenlogin({ 'version': appVersion, + 'channel': channel, }); if (response?['user'] != null && response['user'] != '') { final user = User.fromJson(response); diff --git a/lib/modules/splash/views/splash_view.dart b/lib/modules/splash/views/splash_view.dart index 175606b35..487c4613a 100644 --- a/lib/modules/splash/views/splash_view.dart +++ b/lib/modules/splash/views/splash_view.dart @@ -41,12 +41,13 @@ class SplashView extends GetView { ), // 隐私政策组件 - 添加在底部 - Positioned( - bottom: 90.h, - left: 0, - right: 0, - child: _buildTermsAndPrivacy(isDarkMode), - ), + if (!controller.hasAcceptedPrivacy.value) + Positioned( + bottom: 90.h, + left: 0, + right: 0, + child: _buildTermsAndPrivacy(isDarkMode), + ), // 版本号 //_buildVersionInfo(isDarkMode),