gpt4 book ai didi

firebase - FLUTTER 应用程序的 Firestore 中的 ValueEventListener 等效项是什么

转载 作者:行者123 更新时间:2023-12-03 04:52:17 25 4
gpt4 key购买 nike

更新!!
假设我有一个名为 的集合收藏名 文档 ID signed_user_id .我正在尝试监听子节点 signed_user_id 并且仅当该文档 时才执行一项任务signed_user_id 变化。它正在工作,但在尝试监听文档更改时调用了两次。

_listenForHtmlContentUpdate() {
widget.firestore
.collection('collection_name')
.document('signed_user_id')
.snapshots()
.listen((event) {
print('object');
print(event.data);
});
在第二种情况下,假设我有名称为 的内部集合和内部文档html_doc .所以,我想听 html_doc 文档字段更改。当我使用多个集合和文档时,此功能不起作用。我的意思是当试图倾听内心的 html_doc 文档更新/更改。那么,如何使用flutter监听内部文档的变化呢?
_listenForHtmlContentUpdate() {
widget.firestore
.collection('collection_name')
.document('signed_user_id')
.collection('html')
.document('html_doc')
.snapshots()
.listen((event) {
print('object');
print(event.data);
});
}
Firestore 更新调用两次案例:根据文档,您应用中的本地写入将立即调用快照监听器。这是因为一个称为“延迟补偿”的重要功能。当您执行写入时,您的监听器将在数据发送到后端之前收到新数据的通知。
检索到的文档具有 metadata.hasPendingWrites 属性,该属性指示文档是否具有尚未写入后端的本地更改。您可以使用此属性来确定快照监听器接收到的事件源。这就是调用两次的原因。
_listenForHtmlContentUpdate() {
print('_listenForHtmlContentUpdate *****');
widget.firestore
.collection('resume')
.document('signed_user_id')
.snapshots()
.listen((event) {
// check and perform the task accordingly.
var source = event.metadata.hasPendingWrites ? "Local" : "Server";
print(source);
});

最佳答案

方法snapshots()相当于 ValueEventListener ,两者都会实时监听任何变化。但在 Firestore 中,您无法监听文档中的单个字段。 snapshot()如果文档中发生任何更改,将提供实时更新。

关于firebase - FLUTTER 应用程序的 Firestore 中的 ValueEventListener 等效项是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61183841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com