onAuthStateChanged调用太多次,并强制重建顶部小部件

时间:2019-04-21 22:09:48

标签: flutter stream firebase-authentication

我将flutter与firebase身份验证一起使用,并且尝试将streamBuilder与Firebase Auth中的 onAuthStateChanged 一起使用。

如果用户已登录,则返回主屏幕,在其他情况下,则返回signInScreen。 一切都很好,但是当我在streambuilder中添加一个print('')时(例如在if之前),我可以看到我的streamBuilder被调用了太多次,例如当我按下一个新屏幕时,当我弹出时屏幕...等。即使这些屏幕中没有数据(只是一个空的Container())。我的任何一个具有connection.waiting状态和connection.active的动作(推,弹出...)至少调用过onAuthStateChanged。

因为每次都会重建homeScreen,这意味着每次都会重新构建整个应用程序。

决策代码:

Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder(
        stream: userBloc.currentUser.onStateChange(),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return HomeScreen();
          } else {
            return SignInScreen();
          }
        },
      ),
    );
  }

我的主要目标是仅在 snapshot.hasData 更改时才强制streamBuilder重建窗口小部件,而在 onAuthStateChanged 收到无用且不需要重建我的东西时则不强制整个应用程序。

0 个答案:

没有答案