Flutter从回调中将事件添加到块



我遇到了一个问题,我不明白为什么添加事件不会导致调用mapEventToState方法。

当我调用_getFooBar()时,我设置了一个事件通道,当它流式传输更改时,我希望BLoC产生新的状态。但是,只有日志被打印出来,mapEventToState不会被触发。

我不知道为什么在应该执行代码行的时候没有将事件添加到BLoC中。

Future<void> _getFooBar() async {
const eventChannel = EventChannel('com.foo.bar/faz');

FazBearBloc bloc = this;
eventChannel.receiveBroadcastStream().listen((event) {
if (event is String) {
if (event == "foo") {
dev.log('changes $event');
bloc.add(FooDidSucceed());
} else if (event == "bar") {
dev.log('changes $event');
bloc.add(FooDidFail());
}
}
}, onError: (error) {
dev.log('error starting fooBar notifier: ${error}');
});
}

我还尝试添加listen((event) async* {作为侦听方法的函数,但该函数似乎从未发生过。

原来具有BlocProvider的小部件正在被卸载。

所以我的解决方案是确保小部件没有被处理掉。

最新更新