Flutter redux epics - takeUntil动作使流无法使用

问题描述 投票:0回答:1

我正在使用redux与redux,并处理流数据我正在使用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因为我完全关闭了observable ..

redux flutter flutter-redux
1个回答
0
投票

尝试在takeUntil之后将flatMap移动到getStreamData().map()。当接收到动作时,这将取消内部可观察者而不是外部可观察者。

© www.soinside.com 2019 - 2024. All rights reserved.