如何使用Firebase在颤音上正确实现注销



听起来很愚蠢,但我真的无法正确地注销我的应用

routes: <String,WidgetBuilder>{
    '/StartAppPage':(BuildContext context)=>new StartAppPage(),
    '/LoginPage':(BuildContext context)=> new LoginPage(),
    '/HomePage':(BuildContext context)=> new HomePage)
  },

因此,应用程序检查使用和基于使用用户是否有用户的使用和路由。

我的主页有一个FirebaseAnimatedList,并且在我的主页上有一个注销按钮,可以执行此操作

await googleSignIn.signOut();
await FirebaseAuth.instance.signOut();
await FirebaseDatabase.instance.goOffline();
return Navigator.pushReplacementNamed(context, '/StartApp');

到主页并注销用户。

但是,当其他用户再次登录时,列表显示旧用户的数据,列表是可用的,将我的数据库弄乱

我如何正确地实现此问题,而固定性关闭或没有区别

解决方案:通过应用程序保留Firebase用户的一个实例。我建议全局变量

签名后,您可以考虑在此处进行的是在当前屏幕上检查用户是否已验证。如果用户仍在登录,请显示数据。如果没有,请导航到登录屏幕。

FirebaseAuth.instance
  .idTokenChanges()
  .listen((User? user) {
    if (user == null) {
      debugPrint('User is currently signed out!');
      // TODO: navigate to Login screen?
    } else {
      debugPrint('User is signed in!');
      // TODO: display data
    }
  });