【问题标题】:Strange FirebaseAuth.instance.onAuthStateChanged is not updating streambuilder奇怪的 FirebaseAuth.instance.onAuthStateChanged 没有更新 streambuilder
【发布时间】:2020-05-15 19:26:26
【问题描述】:

我在颤振应用程序中使用 Firebase 身份验证。当用户注册或登录时,我可以看到 FirebaseAuth.instance.onAuthStateChanged 被调用 但 Streambuilder 没有更新小部件。我还注意到有时在用户登录后甚至没有调用 FirebaseAuth.instance.onAuthStateChanged。但是当我重新加载屏幕或重新运行应用程序时,我可以看到用户已登录。下面是我的流生成器​​代码。

return StreamBuilder<FirebaseUser>(
      stream: FirebaseAuth.instance.onAuthStateChanged,
      builder: (ctx, userSnapshot) {
        if (userSnapshot.hasData) {
          print(userSnapshot.data);
          print('data changed');
          return FutureBuilder(
            future: Future.delayed(Duration(seconds: 1)),
            builder: (ctx, asyncdata) {
              if (asyncdata.connectionState == ConnectionState.done) {
                print('user has data');
                return UserList();
              } else {
                return Scaffold(
                  body: Center(
                    child: CircularProgressIndicator(),
                  ),
                );
              }
            },
          );
        } else {
          print('load auth screen');
          return AuthScreen();
        }
      },
    );

【问题讨论】:

  • 我也遇到了同样的问题,你解决了吗?

标签: flutter firebase-authentication


【解决方案1】:

您可能使用未在 onAuthStateChanged 中分配的 FirebaseAuth 进行登录,因此您应该这样做:

 _auth = FirebaseAuth.instance;
///
StreamBuilder<FirebaseUser>(
      stream: _auth.onAuthStateChanged,
///
signIn() async {
var result = await _auth.signInWithCredential(credential);
}

【讨论】:

  • 我也试过你的方法,但结果还是一样。
  • 你想和提供者一起做吗?
  • 在调用 authStatechanged 时,我必须手动将用户重定向到登录屏幕后。但 streambuilder 还没有更新。
猜你喜欢
  • 2021-09-27
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 2021-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多