# #flutter #dart #google-cloud-firestore #dart-stream
Вопрос:
Для того, кто понимает потоки в Dart, это, скорее всего, тривиально. У меня есть список connections
, которые являются просто идентификаторами документов, которые существуют в одной коллекции в firestore.
Я не могу использовать whereIn
для своего запроса firestore, потому что он ограничен 10 элементами. Итак, я пытаюсь перебрать идентификатор каждого соединения, а затем использовать поток сбора с запросом, чтобы получать по одному документу за раз.
Приведенный ниже код не работает. Он возвращает эту ошибку:
The method 'add' was called on null.
Stream<List<SpecialEvents>> upcomingSpecialEventsStream(List connections) {
if (connections.isEmpty) {
return Stream.value(null);
}
List event;
connections.forEach((connection) {
event.add(_service.collectionStream(
path: FirestorePath.specialEvents(),
queryBuilder: (query) => query.where(
'uid',
isEqualTo: connection,
),
builder: (data, connection) => SpecialEvents.fromMap(data, connection),
));
});
return event as Stream;
}
Комментарии:
1. Похоже, что он равен
event
нулю, вероятно, потому, что вы никогда не создаете список.2. Не уверен, что вы имеете в виду «событие.добавить». Мне удалось сделать это с помощью Rxdart и объединения потоков, однако я оставляю это без ответа для кого-то, кто может показать некоторый код для добавления этих отдельных потоков коллекции firestore в один поток. Может быть, я лаю не на то дерево. Отсутствие возможности выполнять ИЛИ запросов > 10 является проблемой в firestore.
3. Ошибка говорит о том, что вы звоните
add
null
. Единственный экземпляр.add
в коде , которым вы поделились, — этоevent.add(_service.collectionStream(...
, следовательно, похоже, чтоevent
именноnull
тогда выполняется эта строка.