连续产生多个状态,但BlocBuilder不会接收所有状态

时间:2020-07-30 13:14:54

标签: flutter dart stream bloc

我的应用中有一个BLoC。此BLoC建立了一个View。视图有两个主要状态:我们称它们为IsGreenIsRed。每次用户点击按钮时,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并未全部接收它们。仅接收IsGreenIsRed事件。 IsBlueIsException被遗漏了。我不明白为什么。我是否不允许直接接连发送多个国家?

有人知道我可以多久和多快进行一次状态更改吗?

0 个答案:

没有答案