You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中Firebase退出登录引发应用崩溃,无法跳转登录页

问题排查:退出登录后跳转崩溃/设备连接丢失

问题根源分析

  1. 原代码中try/catch无法捕获FirebaseAuth.instance.signOut()的异步错误——因为signOut()返回Future,直接链式调用then时,错误会被Future内部处理,外层try/catch无法捕获,导致崩溃时无错误日志。
  2. 未检查Widget状态,若跳转时当前页面已被销毁,使用context会引发崩溃。

修正代码

将onTap改为异步函数,用async/await控制流程,同时增加Widget状态检查:

onTap: () async {
  try {
    await FirebaseAuth.instance.signOut();
    // 确保当前Widget仍挂载,避免无效context引发崩溃
    if (mounted) {
      Navigator.pushAndRemoveUntil(
        context,
        MaterialPageRoute(builder: (context) => LoginSignupScreen()),
        (route) => false,
      );
    }
  } catch (e) {
    print('登出失败: ${e.toString()}');
  }
}

额外排查方向

  • 检查LoginSignupScreen初始化逻辑,确认是否依赖已登出用户的资源(如Firestore文档、Storage引用),这类依赖会导致空指针或权限错误。
  • 查看设备日志(Android用Logcat,iOS用Xcode控制台),获取崩溃堆栈信息,定位具体崩溃位置。

内容的提问来源于stack exchange,提问作者Laurent Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:40:55