Flutter 即使条件为真,StreamBuilder也无法重新布线

Flutter 即使条件为真,StreamBuilder也无法重新布线,flutter,Flutter,我正在使用firebase构建颤振认证应用程序。成功登录后,StreamBuilder会获取新数据,但不会重定向到所需组件,而是停留在登录页面上。以下是代码片段: StreamBuilder<UserModel>( stream: _authService.user, builder: (BuildContext context, snapshot) { if (snapshot.hasData) {

我正在使用firebase构建颤振认证应用程序。成功登录后,StreamBuilder会获取新数据,但不会重定向到所需组件,而是停留在登录页面上。以下是代码片段:

StreamBuilder<UserModel>(
          stream: _authService.user,
          builder: (BuildContext context, snapshot) {
            if (snapshot.hasData) {
              return DashboardScreen(snapshot.data);
            }
            return HomeScreen();
            // return snapshot.hasData
            //     ? DashboardScreen(snapshot.data)
            //     : HomeScreen();
          },
        )
StreamBuilder(
流:_authService.user,
生成器:(BuildContext上下文,快照){
if(snapshot.hasData){
返回仪表板屏幕(snapshot.data);
}
返回主屏幕();
//返回snapshot.hasData
//?仪表板屏幕(快照数据)
//:主屏幕();
},
)

您应该知道的唯一一件事是,用户可以从主屏幕选择登录或注册选项。这将打开一个新的屏幕(AuthScreen),在这个屏幕上我有一个登录/注册表单。成功登录/注册后,即使snapshot.hasData为true,它仍保持在同一页面上。这是个问题吗?弗利特是不是不能找出以前的路线?我真的很感谢您的帮助。

将路由想象成一副牌,如果您路由到另一个屏幕,则这是您当前卡上的一张新卡

StreamBuilder
可能正在正常更新,您可以通过刷新颤振检查器小部件树来检查这一点,查看
仪表板屏幕。但是你不会在屏幕上看到它,因为路线在它上面


成功登录后,弹出您的路线并查看是否有效。

注意:如果我将HomeScreen()替换为AuthScreen(),它将按预期工作。谢谢您的回答@Michel。这就是我的想法,我在成功登录后使用Navigator.pop(上下文)。这是工作的预期现在,但我有点担心,因为我不知道这是否是最佳的解决方案。不过,我接受这个答案。