From 2dbcf0cfa8b8534acfde84e124f167142bbef0ec Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Sat, 26 Jul 2025 12:52:15 +0800 Subject: [PATCH] =?UTF-8?q?fix(settings):=20=E4=BF=AE=E5=A4=8D=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=A3=80=E6=9F=A5=E5=AF=B9=E8=AF=9D=E6=A1=86=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E7=9A=84=E5=8F=AF=E9=9D=A0=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改进对话框关闭逻辑,使用显式状态跟踪和多种关闭方式确保对话框能正确关闭。同时优化颜色透明度设置方式。 --- .../controllers/settings_controller.dart | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/lib/modules/settings/controllers/settings_controller.dart b/lib/modules/settings/controllers/settings_controller.dart index 7c3bf6a8c..92829c798 100644 --- a/lib/modules/settings/controllers/settings_controller.dart +++ b/lib/modules/settings/controllers/settings_controller.dart @@ -482,8 +482,12 @@ class SettingsController extends GetxController { if (isCheckingUpdate) return; isCheckingUpdate = true; + // 用于跟踪我们的对话框 + bool dialogShown = false; + try { // 显示加载提示 + dialogShown = true; Get.dialog( const Center( child: CircularProgressIndicator(), @@ -494,8 +498,12 @@ class SettingsController extends GetxController { final versionService = VersionUpdateService.to; final updateInfo = await versionService.checkForUpdate(); - // 关闭加载提示 - Get.back(); + // 关闭加载提示 - 使用精确的关闭方式 + if (dialogShown) { + dialogShown = false; + // 直接关闭最顶层的对话框,不依赖状态判断 + Navigator.of(Get.overlayContext!).pop(); + } if (updateInfo.hasUpdate) { // 显示更新对话框 @@ -508,21 +516,30 @@ class SettingsController extends GetxController { .tr //当前已是最新版本 .replaceAll('{version}', updateInfo.currentVersion), snackPosition: SnackPosition.TOP, - backgroundColor: Colors.green.withOpacity(0.8), + backgroundColor: Colors.green.withValues(alpha: 0.8), colorText: Colors.white, ); } } catch (e) { - // 关闭加载提示 - if (Get.isDialogOpen == true) { - Get.back(closeOverlays: true); + // 关闭加载提示 - 异常情况下的可靠关闭 + if (dialogShown) { + dialogShown = false; + try { + // 尝试直接关闭 + Navigator.of(Get.overlayContext!).pop(); + } catch (popError) { + // 如果直接关闭失败,使用备用方案 + if (Get.isDialogOpen == true) { + Get.back(); + } + } } Get.snackbar( 'error'.tr, 'networkErrorRetry'.tr, // 网络错误,请稍后重试 snackPosition: SnackPosition.TOP, - backgroundColor: Colors.red.withOpacity(0.8), + backgroundColor: Colors.red.withValues(alpha: 0.8), colorText: Colors.white, ); } finally {