我熟悉颤振基础知识,我了解流构建器。但是,当它检测到更改时,我如何更新查询结果。
这是我想在文档
void initState() {
getUsers();
super.initState();
}
getUsers() async {
final FirebaseAuth auth = FirebaseAuth.instance;
final User? user = auth.currentUser;
final uid = user!.uid;
final QuerySnapshot snapshot =
await userRef.where('uid', isEqualTo: uid).get();
snapshot.docs.forEach((doc) {
name = doc["firstName"];
children = doc["children"].toString();
print(doc["children"].toString());
});
}
这段代码工作得很好,但是当我改变孩子的数量,例如,除非我重新启动应用程序,当然,用户不能做
这是我的firestore集合的图像
firestore集合的图像
正如你所看到的,这个查询搜索整个集合的文档与当前用户的uid相同。这就是我如何检索特定于用户的数据,如姓、名和孩子。我有一个功能,允许用户添加孩子,然而,孩子的数量保持不变,直到我重新启动应用程序。我怎么能使结果自动更新之后,孩子的数量变化。
谢谢!
调用get()
意味着您的应用程序从数据库读取文档一次,然后停止关心。
如果您想在底层数据发生变化时从数据库获得实时更新,您需要使用snapshots
属性,这将为您提供Stream
的更新。
要在UI中显示更新流,您将使用StreamBuilder
,如FlutterFire文档中所示。