Flutter Firestore-后端的写操作成功时,是否有可能得到通知?

时间:2019-05-28 04:14:59

标签: flutter google-cloud-firestore

当我为集合创建新文档时,例如使用

Firestore.instance.document('messages/$messageUid').setData(map);

该收藏集的收听者

Firestore.instance.collection('messages').snapshots().listen(
    (QuerySnapshot snap) {
        // do something here
    })
将数据写入本地缓存时,

仅会触发一次。而且即使用户离线也总是会触发该事件。

对于其他平台,firestore允许通过元数据更改触发侦听器,因此当在后端完成写入时,我们可以得到第二个调用。但是,flutter插件似乎尚不支持该功能。

因此,在使用flutter时,在调用写操作之后,是否有任何方法可以立即确认后端是否成功?

1 个答案:

答案 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(),
            );
        }
      },
    );
  } 
相关问题