Flutter Firebase注销

时间:2018-06-21 09:29:17

标签: firebase dart firebase-authentication flutter

我试图让用户从应用程序注销后返回登录页面,但是天哪,什么都没用。我遇到诸如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"));
  }

3 个答案:

答案 0 :(得分:2)

尝试了Navigator中的每个功能之后,终于成功了:

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

答案 1 :(得分:1)

您不应该在注销后手动将使用权发送到登录页面。相反,您应该听用户的身份验证状态更改,然后根据用户的身份验证状态选择应该显示给用户的页面。

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

答案 2 :(得分:0)

尝试使用以下代码

Navigator.pushReplacementNamed(context, routeName)