【发布时间】:2021-07-02 07:26:31
【问题描述】:
假设有三个屏幕。 main.dart、home.dart 和 signIn.dart 我有代码,如下所示。当我在主屏幕中并且 streamProvider(firebaseAuthStateProvider) 发生变化时,我将自动返回 main.dart 屏幕。之后,if 查询将我直接发送到 signIn.dart 屏幕。正如预期的那样。但是,当我创建一个新的嵌套屏幕并且 streamProvider 更改其值时,“根”屏幕 (home.dart) 不会将我发送回登录屏幕。所以我想它只适用于第一个孩子而不是嵌套的孩子。
是否可以在根屏幕中只使用一个查询来检查 streamProvider,还是我必须在每个屏幕中都放置一个查询来检查值?
class SignInCheck extends ConsumerWidget {
@override
Widget build(BuildContext context, ScopedReader scopedReader) {
final _authState = scopedReader(firebaseAuthStateProvider); //
return _authState.when(data: (value) {
if (value != null) {
return HomeScreen();
} else {
return SignIn();
}
//...
【问题讨论】:
标签: firebase flutter firebase-authentication provider riverpod