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
流,而不是您的 checkStatus
。 Dispatch
(或最新版本中的 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()
}
在我的集团中,我有 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
流,而不是您的 checkStatus
。 Dispatch
(或最新版本中的 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()
}