【问题标题】:How to check if a user document exists in Flutter Firestore?如何检查 Flutter Firestore 中是否存在用户文档?
【发布时间】:2021-12-29 15:34:06
【问题描述】:

如果用户通过 StreamBuilder 根据用户 ID ('uid') 在 Firestore 中的“用户”集合下有一个文档,我正尝试在用户通过身份验证后添加一个检查。

我遇到的问题是,当我运行我的代码时,它按预期工作,但几秒钟后,即使文档不存在,它也会重定向到“UserHomeScreen”。我该如何纠正这个问题,以便没有用户文档的用户不会被推送到我的“UserHomeScreen”?

这是我的代码:

class UserStream extends StatelessWidget {
  const UserStream({Key? key}) : super(key: key);
  

  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: FirebaseFirestore.instance.collection('users').doc('uid').snapshots(),
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          return const UserHomeScreen();
        } else {
          return const SignUpNewUser();
        }
      },
    );
  }
}

【问题讨论】:

    标签: firebase flutter dart firebase-realtime-database google-cloud-firestore


    【解决方案1】:

    当异步调用完成时,snapshot.hasData 为真。即使文档不存在,一旦确定,snapshot.hasData 仍然为真。

    为确保文档存在,您还需要检查:

    if (snapshot.hasData && snapshot.data!.exists) {
      ...
    

    这也显示在handling one time reads 的文档中。

    【讨论】:

      猜你喜欢
      • 2019-09-24
      • 2020-12-24
      • 2021-07-22
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多