Flutter Redux史诗-TakeUntil动作使流无法使用

时间:2019-04-24 13:18:53

标签: redux flutter flutter-redux

我正在使用带有redux的flutter,并使用redux-epics处理流数据。

赞:

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()),这完全破坏了Observable,因此,如果我下次调用store.dispatch(RequestDataAction()),则下一次转到该屏幕时,流是没有发送数据,实际上整个Observable已经死了!

如何解决此问题?据我所知,问题是takeUntil,因为我完全关闭了可观察对象。

1 个答案:

答案 0 :(得分:0)

尝试将takeUntil移到flatMap之后。收到动作后,这将取消内部的可观察的,而不是外部的可观察的。