在我的集团中,我有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的情况。
答案 0 :(得分:2)
这些是完全不同的流。您的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()
}