вернуть список объектов из firebase / flutter - PullRequest
0 голосов
/ 30 января 2020

У меня есть коллекция в Firebase. Я возвращаю поток с этим кодом:

Stream<List<T>> collectionStream<T>({
    @required String path,
    @required T builder(Map<String, dynamic> data),
  }) {
    final reference = Firestore.instance.collection(path);
    final snapshots = reference.snapshots();
    return snapshots.map((snapshot) =>
        snapshot.documents.map((snapshot) => builder(snapshot.data)).toList());
  }
}

Как я могу вернуть List<T>. Мне не нужен поток. Мне нужен список моих объектов.

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Вместо

final snapshots = reference.snapshots();

вы должны сделать

final _docs = reference.getDocuments();

Это вернет QuerySnapshot, содержащий список в _docs.documents.

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

0 голосов
/ 30 января 2020

Вы можете использовать метод получения .single для потока, возвращенного из collectionStream, чтобы получить будущее:

Stream<List<Bookmark>> bookmarkStream = collectionStream<Bookmark>(...);

...

List<Bookmark> singleList = await bookmarkStream.single;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...