Как наблюдать изменения в потоке с Блоком - PullRequest
0 голосов
/ 12 февраля 2020

У меня проблема с наблюдением за моей базой данных пожарного магазина в моем блоке c:

  @override
  Stream<ProjectsState> mapEventToState(
     ProjectsEvent event,
  ) async* {
    if (event is LoadData)
        yield* repo.observeData().map((data) => DataLoadSuccess(data));
}

Эта работа, но мой блок c больше не отвечает на другие события. Это «окровавленный»

У вас есть идеи? Спасибо

1 Ответ

0 голосов
/ 13 февраля 2020

yield* вернет все элементы в потоке, пока этот поток не закончится. Потоки Firestore создаются таким образом, что они никогда не будут закрыты (по крайней мере, до тех пор, пока они не будут собраны мусором). Таким образом, ваш метод mapEventToState теперь находится в состоянии, когда он всегда будет ожидать следующего элемента в магазине.

Вместо использования yield*, вы можете просто использовать yield и вернуть единственное значение, вызвав .first в потоке.

yield repo.observeData().map((data) => DataLoadSuccess(data)).first;
...