From 3942cb405a54dee02c883c560dc4a3b9d9bf8724 Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 15 Dec 2025 06:14:49 -0800 Subject: [PATCH] =?UTF-8?q?fix(frontend):=20=E6=B7=BB=E5=8A=A0=E6=96=B0?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E6=97=B6=E6=98=BE=E7=A4=BA=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 _isAddingAccount 状态变量 - 点击"添加新账号"时显示"正在准备..."加载提示 - 添加 try-catch 错误处理,失败时显示错误提示 - 防止重复点击 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../pages/account_switch_page.dart | 47 +++++++++++++------ 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/frontend/mobile-app/lib/features/account/presentation/pages/account_switch_page.dart b/frontend/mobile-app/lib/features/account/presentation/pages/account_switch_page.dart index a55f7c8e..db3031b5 100644 --- a/frontend/mobile-app/lib/features/account/presentation/pages/account_switch_page.dart +++ b/frontend/mobile-app/lib/features/account/presentation/pages/account_switch_page.dart @@ -20,6 +20,7 @@ class _AccountSwitchPageState extends ConsumerState { String? _currentAccountId; bool _isLoading = true; bool _isSwitching = false; + bool _isAddingAccount = false; @override void initState() { @@ -88,16 +89,34 @@ class _AccountSwitchPageState extends ConsumerState { } Future _addNewAccount() async { - // 保存当前账号数据 - final multiAccountService = ref.read(multiAccountServiceProvider); - await multiAccountService.saveCurrentAccountData(); + if (_isAddingAccount) return; - // 退出当前账号但保留数据 - await multiAccountService.logoutCurrentAccount(); + setState(() => _isAddingAccount = true); - // 跳转到向导页创建新账号 - if (mounted) { - context.go(RoutePaths.guide); + try { + final multiAccountService = ref.read(multiAccountServiceProvider); + + // 保存当前账号数据 + await multiAccountService.saveCurrentAccountData(); + + // 退出当前账号但保留数据 + await multiAccountService.logoutCurrentAccount(); + + // 跳转到向导页创建新账号 + if (mounted) { + context.go(RoutePaths.guide); + } + } catch (e) { + debugPrint('[AccountSwitchPage] 添加新账号失败: $e'); + if (mounted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('添加新账号失败: $e')), + ); + } + } finally { + if (mounted) { + setState(() => _isAddingAccount = false); + } } } @@ -179,18 +198,18 @@ class _AccountSwitchPageState extends ConsumerState { color: Color(0xFFD4AF37), ), ) - : _isSwitching - ? const Center( + : (_isSwitching || _isAddingAccount) + ? Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - CircularProgressIndicator( + const CircularProgressIndicator( color: Color(0xFFD4AF37), ), - SizedBox(height: 16), + const SizedBox(height: 16), Text( - '正在切换账号...', - style: TextStyle( + _isAddingAccount ? '正在准备...' : '正在切换账号...', + style: const TextStyle( fontSize: 14, color: Color(0xFF5D4037), ),