Flutter Bloc软件包,当本机代码从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中调用if的情况。

lmzml 回答:Flutter Bloc软件包,当本机代码从dart

这些是完全不同的流。您的BlocBuilder不在mapEventToState上收听checkStatus流。从您的checkStatus流到您的区块的Dispatch(或最新版本的add)事件,然后在响应这些事件时在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()
   }
本文链接:https://www.f2er.com/3146023.html

大家都在问