Могу ли я прослушать один документ в Firestore с помощью StreamBuilder? - PullRequest
4 голосов
/ 08 июня 2019

Я пытаюсь прослушать изменения в одном документе коллекции, но не могу заставить его работать.

Widget build(BuildContext context) {
  return StreamBuilder(
    stream: Firestore.instance.collection("events").document(widget.documentID).get().asStream(),
    ...
  }
}

Я использую метод .asStream () , но я получаю документ только один раз. Если я изменю данные в консоли Firebase, ничего не обновится, если я не открою представление.

Есть ли способ сделать это?

1 Ответ

6 голосов
/ 08 июня 2019

Причина, по которой вы получаете документ только один раз, заключается в том, что метод DocumentReference.get первоначально возвращает только Future, а при использовании asStream возвращается только one один Future до Stream.

Пакет cloud_firestore, однако, имеет встроенный метод правильного прослушивания документов.
Вместо него можно использовать DocumentReference.snapshots, который возвращает Stream изкаждое изменение этого документа.

В вашем коде вам нужно будет только заменить .get().asStream() на .snapshots().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...