在我的应用中,我试图执行一个简单的登录/注册操作。

我有一个StreamBuilder,如果没有用户,它将返回登录屏幕;如果用户已登录,则返回主屏幕:

StreamBuilder(
          stream: FirebaseAuth.instance.onAuthStateChanged,
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            Widget widget;
            switch (snapshot.data) {
              case (null):
                widget = SignIn();
                break;
              default:
                widget = Home();
            }

            return AnimatedSwitcher(
          child: widget,
          duration: Duration(seconds: 1),
          transitionBuilder: (Widget child, Animation<double> animation) {
            return ScaleTransition(child: child, scale: animation);
          },
        );
          }),

该代码可以正常工作,如下所示:

firebase - Firebase身份验证未保存当前用户-LMLPHP

但是,当用户已经登录时,我关闭并重新打开该应用程序时,登录页面会在重定向到主页之前短暂显示。

单击热重启时会发生相同的情况:

firebase - Firebase身份验证未保存当前用户-LMLPHP

在上图中,我已经登录,然后单击热重载,然后在重定向到主屏幕之前短暂显示登录屏幕。

当互联网关闭并且没有动画切换台时,也会发生同样的情况。

我该如何解决这个问题?

最佳答案

使用ConnectionState:

if (snapshot.connectionState == ConnectionState.waiting) {
 return Container();
}


您可以用SplashScreen / Loading Screen替换Container

关于firebase - Firebase身份验证未保存当前用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61660287/

10-12 00:26
查看更多