如何检查 Flutter Firestore 中是不是存在用户文档?
Posted
技术标签:
【中文标题】如何检查 Flutter Firestore 中是不是存在用户文档?【英文标题】: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();
,
);
【问题讨论】:
【参考方案1】:当异步调用完成时,snapshot.hasData
为真。即使文档不存在,一旦确定,snapshot.hasData
仍然为真。
为确保文档存在,您还需要检查:
if (snapshot.hasData && snapshot.data!.exists)
...
这也显示在handling one time reads 的文档中。
【讨论】:
以上是关于如何检查 Flutter Firestore 中是不是存在用户文档?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Flutter 在 Firestore 中检查多个文档中的特定值
如何使用 Flutter future<bool> 检查 Firestore 中是不是存在子集合
如何在 FireStore 中获取 isAdmin 字段并在 Flutter 中检查它是真还是假
检查 Flutter Firestore 中是不是已存在字段