根因:ref.invalidate(authProvider) 销毁旧 AuthNotifier 后,新实例的构造函数 仅设置 AuthState(status: AuthStatus.initial),从不自动调用 checkAuthStatus() 从 SecureStorage 重新加载认证数据。导致 auth 状态停留在 initial(未认证), 依赖 auth 状态的组件误判为"未登录",触发页面跳转到登录页。 修复: - account_switch_page: invalidate 后立即调用 loadAuthState() 从 storage 读取新账号数据,确保 auth 状态为 authenticated 后再导航 - account_switch_page: 切换后重置 ApiClient 的 tokenExpired 标记,防止 旧会话的 401 状态阻塞新账号的请求 - app.dart: _handleTokenExpired() 增加醒目日志和调用栈打印,便于排查 切换期间是否有 token 过期事件被误触发 切换流程更新为 6 步: [1/6] switchToAccount() - 保存旧账号、清空、恢复新账号 storage [2/6] onBeforeRestore - 停止所有定时器 [3/6] invalidate Provider - 销毁旧 Provider 实例 [4/6] loadAuthState() - 从 storage 加载新账号 auth 状态 ← 新增关键步骤 [5/6] 恢复遥测上传 [6/6] 导航到 ranking 页面 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| core | ||
| features | ||
| routes | ||
| app.dart | ||
| bootstrap.dart | ||
| main.dart | ||