如何在Flutter中使用StreamBuilder侦听导航堆栈上的多个小部件?

时间:2019-07-02 23:27:03

标签: flutter dart

我正在使用StreamBuilder来监听Firebase用户上的onAuthStateChanged。如何将侦听范围扩展到导航堆栈上的多个小部件?我的导航流程如下

  1. 主页小部件->使用社交小部件登录(1)->使用电子邮件小部件登录(2)

StreamBuilder在Home小部件上,它只是侦听(1)小部件上的更改。

首页小部件:

Widget _handleCurrentScreen() {
  return new StreamBuilder<FirebaseUser>(
      stream: FirebaseAuth.instance.onAuthStateChanged,
      builder: (BuildContext context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return new Center(child: new CircularProgressIndicator());
        } else {
          if (snapshot.hasData) {
            return new Home();
          }
          return new LoginwithSocial();
        }
      });
}

LoginwithSocial具有可与StreamBuilder一起使用的Firebase登录名,但用户也可以通过signup.LoginPage()点击以使用电子邮件/密码登录。那里的登录未被捕获。
...

            RaisedButton.icon(
              color: Colors.white,
              label: Text('Sign in'),
              icon: Icon(Icons.email),
              onPressed: () => Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => signup.LoginPage()),
              ),

问题在于,当我们导航到signup.LoginPage小部件时,onAuthStateChanged上的更改没有被捕获。

LoginWithSocial是否需要自己的StreamBuilder

0 个答案:

没有答案