Flutter Bloc 包,当本机代码从 dart 调用方法时产生状态

Flutter Bloc package, yield state when native code invoke a method from dart

在我的集团中,我有 2 个流。一个是 mapEventToState,我可以在其中产生状态,我创建了第二个,它是从一个由本机代码调用的函数调用的。

来电:

checkStatus(_internalState).listen((data){});

流:

Stream<VpnConnectionState> checkStatus(_internalState) async * {
switch (_internalState) {
  case state.down:
    yield down();
    break;
  case state.up:
    yield up();
    break;
}
_previousState = _internalState;
}

问题是当我 yield checkSatus 流中的某些内容未到达我的 BlocBuilder 时。如果从流中调用 mapEventToState 正在工作。

这些是完全不同的流。您的 BlocBuilder 正在收听您的 mapEventToState 流,而不是您的 checkStatusDispatch(或最新版本中的 add)事件从您的 checkStatus 流到您的块,然后在响应这些事件时在 mapEventToState 中产生新状态。

或者为了简单起见,甚至像这里一样摆脱你的 checkStatus 流:

void checkStatus(_internalState) {
switch (_internalState) {
  case state.down:
     dispatch(DownEvent());
    break;
  case state.up:
    dispatch(UpEvent());
    break;
}
_previousState = _internalState;
}

void mapEventToSteam(Event event) {
    if(event is DownEvent) {
     yield DownState()
   }
    if(event is UpEvent) {
     yield UpState()
   }