【问题标题】:StreamBuilder is not able to re-route even though condition is true即使条件为真,StreamBuilder 也无法重新路由
【发布时间】:2021-01-10 09:20:02
【问题描述】:

我正在使用 firebase 构建 Flutter 身份验证应用程序。成功登录后,StreamBuilder 会获取新数据,但不会重定向到所需的组件,而是停留在登录页面上。这是代码sn-p:

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();
          },
        )

您应该知道的唯一一件事是,从 HomeScreen 用户可以选择登录或注册选项。这将打开新屏幕(AuthScreen),在该屏幕上我有登录/注册表格。成功登录/注册后,即使 snapshot.hasData 为 true,它也会停留在同一页面上。这是一个问题吗?颤振无法弄清楚以前的路线吗?我真的很感谢这里的一些帮助。

【问题讨论】:

  • 注意:如果我用 AuthScreen() 替换 HomeScreen(),它会按预期工作。

标签: flutter


【解决方案1】:

将路线想象成一副纸牌,如果您路线到另一个屏幕,那将是您当前纸牌之上的一张新纸牌。

StreamBuilder 可能更新得很好,您可以通过刷新 Flutter Inspector 小部件树来检查这一点,在那里看到DashboardScreen。但是你不会在屏幕上看到它,因为路线就在上面。

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

【讨论】:

  • 感谢@Michel 的回答。这就是我的想法,成功登录后我正在使用 Navigator.pop(context)。它现在按预期工作,但我有点担心,因为我不知道这是否是最佳解决方案。不过我接受了这个答案。
猜你喜欢
  • 2016-01-01
  • 1970-01-01
  • 2022-11-29
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
相关资源
最近更新 更多