Flutter Firebase 注销

Posted

技术标签:

【中文标题】Flutter Firebase 注销【英文标题】:Flutter Firebase signout 【发布时间】:2018-11-30 14:01:14 【问题描述】:

一旦用户从应用程序中退出,我试图让他们返回登录页面,但是天哪,没有任何效果。我收到Bad state: Future already completed 之类的异常,或者应用程序返回登录屏幕,但当我回击时,前一个屏幕仍然存在于堆栈中。

这是我的代码:

_logOut() async
    await _auth.signOut().then((value)
      print("***** log out");
      //Navigator.pop(context);
      //Navigator.popUntil(context, ModalRoute.withName("/login"));
      Navigator.pushReplacement(context, new MaterialPageRoute(builder: (context)=>new MyApp()));
    );
   // Navigator.popUntil(context, ModalRoute.withName("/login"));
  

【问题讨论】:

您应该为此使用 Navigator.push 和 Navigator.pop。 【参考方案1】:

您不应在用户退出后手动将其发送到登录页面。相反,您应该听取用户的身份验证状态更改,并根据他们的身份验证状态选择应该向用户显示的页面。

在此处查看我的答案以获取更多详细信息: Firebase Login with Flutter using onAuthStateChanged

【讨论】:

【参考方案2】:

在尝试了Navigator 的所有功能后,终于成功了:

_logOut() async
    await _auth.signOut().then((_)
      Navigator.of(context).pushNamedAndRemoveUntil("/login", ModalRoute.withName("/home"));
    );
  

【讨论】:

【参考方案3】:

尝试使用以下代码

Navigator.pushReplacementNamed(context, routeName)

【讨论】:

以上是关于Flutter Firebase 注销的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Firebase 注销

在 Flutter 中使用 Firebase/Google 登录时无法注销并重定向到 LoginPage

用户始终登录并且无法在 Flutter Firebase 中注销

Firebase for Flutter 登录构建失败

Flutter 现有项目到 WebApp + Firebase (Firestore + Hosting)

构建 Flutter iOS 应用程序时出错 - Firebase