Я использую флаттер с редуксом и для обработки потоковых данных я использую редекс-эпики.
Примерно так:
Stream<dynamic> getDataEpic(Stream<dynamic> actions, EpicStore<AppState> store) {
return Observable(actions)
.ofType(TypeToken<RequestDataAction>())
.flatMap((RequestDataAction action) {
return getDataStream()
.map(
(data) => UpdateStateWithData(data)
);
})
.takeUntil(actions.where((action) => action is CancelGetDataAction));
}
// getDataStream() - is a stream that returns some stuff...
На моем экране в onInit я вызываю store.dispatch(RequestDataAction())
и onDispose я вызываю store.dispatch(CancelGetDataAction())
, что полностью уничтожает наблюдаемое, поэтому в следующий раз, когда я вызываю store.dispatch(RequestDataAction())
, в следующий раз мой поток не отправляет данные, фактически весь Observable мертв!
Как я могу решить эту проблему?Насколько я вижу, проблема в takeUntil, потому что я полностью закрываю наблюдаемое ..