在我的应用中,我正在尝试执行简单的登录/注册操作。
我有一个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);
},
);
}),
该代码可以正常工作,如下所示:
但是当用户已经登录后,我关闭并重新打开该应用程序时,登录页面会短暂显示,然后重定向到主页。
当我单击热重启时,也会发生同样的情况:
在上图中,我已经登录,然后单击热重载,然后在重定向到主屏幕之前短暂显示登录屏幕。
关闭互联网并且没有动画切换台时也会发生同样的情况。
如何解决此问题?
答案 0 :(得分:1)
使用ConnectionState
:
if (snapshot.connectionState == ConnectionState.waiting) {
return Container();
}
您可以用SplashScreen / Loading Screen替换Container