当我为集合创建新文档时,例如使用
Firestore.instance.document('messages/$messageUid').setData(map);
该收藏集的收听者
Firestore.instance.collection('messages').snapshots().listen(
(QuerySnapshot snap) {
// do something here
})
将数据写入本地缓存时,仅会触发一次。而且即使用户离线也总是会触发该事件。
对于其他平台,firestore允许通过元数据更改触发侦听器,因此当在后端完成写入时,我们可以得到第二个调用。但是,flutter插件似乎尚不支持该功能。
因此,在使用flutter时,在调用写操作之后,是否有任何方法可以立即确认后端是否成功?
答案 0 :(得分:0)
您应该使用StreamBuilder并将快照传递到stream
。只需稍作改动即可直接从cloud_firestore usage doc复制。
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('messages').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting: return new Text('Loading...');
default:
return new ListView(
children: snapshot.data.documents.map((DocumentSnapshot document) {
return new ListTile(
title: new Text('New message here')
);
}).toList(),
);
}
},
);
}