Flterster Firestore - возможно ли получать уведомление, если операция записи в бэкэнде прошла успешно? - PullRequest
0 голосов
/ 28 мая 2019

Когда я создаю новый документ в коллекции, например, используя

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

слушатель этой коллекции

Firestore.instance.collection('messages').snapshots().listen(
    (QuerySnapshot snap) {
        // do something here
    })

будет запущен только один раз, когда данные будут записаны в локальный кеш. И он всегда будет срабатывать, даже если пользователь не в сети.

Для других платформ firestore позволяет прослушивателю запускаться при изменении метаданных, поэтому мы можем получить второй вызов, когда запись выполняется в бэкэнде. Однако плагин флаттера, похоже, пока не поддерживает эту функцию.

Так, при использовании flutter, после вызова операции записи, есть ли какой-либо способ немедленно подтвердить, что это успешно в бэкэнде?

1 Ответ

0 голосов
/ 28 мая 2019

Вы должны использовать StreamBuilder и передавать снимки в stream.Копирование прямо из cloud_firestore use 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(),
            );
        }
      },
    );
  } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...