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),