我的应用中有一个BLoC。此BLoC建立了一个View。视图有两个主要状态:我们称它们为IsGreen
和IsRed
。每次用户点击按钮时,BLoC都应切换到另一状态。到目前为止一切正常。
现在,我需要使用“视图”显示基于中间状态的通知。这种特殊状态称为IsBlue
。如果BLoC从红色状态切换到绿色状态。在切换期间,将调用一个方法,该方法可以引发异常或返回结果。如果引发异常,则应显示通知。如果结果有效,则显示结果。
我的mapEventToState
如下所示:
@override
Stream<MyState> mapEventToState(MyEvent event) async* {
switch(event) {
case MyEvent.goRed:
yield IsGreen();
break;
case MyEvent.goGreen:
yield* doSomeStuff();
break;
}
}
Stream<MyState> doSomeStuff() async* {
try {
String result = doSomething();
yield IsBlue(result);
} on MyException {
yield IsException();
}
yield IsGreen();
}
通过一些日志记录,我发现状态已正确产生,但BlocBuilder并未全部接收它们。仅接收IsGreen
和IsRed
事件。 IsBlue
和IsException
被遗漏了。我不明白为什么。我是否不允许直接接连发送多个国家?
有人知道我可以多久和多快进行一次状态更改吗?