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