Flutter BLoC 多个 BLoC 相同的小部件

hoa*_*oan 13 dart flutter bloc

我对 Flutter 和 BLoC 模式比较陌生,所以我仍然试图把我的头脑围绕在所有事情上。

假设我有一个测验应用程序,其中有一个名为 BLoC 的应用程序,QuestionBloc它使用存储库从文件中获取问题。事件发生QuestionBloc

  • FetchQuestion

状态 QuestionBloc

  • QuestionEmpty
  • QuestionLoading
  • QuestionLoaded 其中包含一个问题对象
  • QuestionError

然后我调用了另一个 BLoC QuestionValidatorBloc,它负责验证问题的答案。答案被输入到一个文本字段中,并且有一个提交按钮来触发验证。事件发生QuestionValidatorBloc

  • ValidateQuestion

状态 QuestionValidatorBloc

  • ValidateInitial
  • ValidateInProgress
  • ValidateSuccess
  • ValidateError

这是相当直接的。不过,现在我需要二者结合QuestionBlocQuestionValidatorBloc在同一个部件,因为其中一人负责获取和显示问题和其他处理验证动作。我怎样才能做到这一点?

Xel*_*gar 5

我假设你正在使用flutter_bloc图书馆。让QuestionBloc聆听QuestionValidatorBloc使用StreamSubscription

class QuestionBloc extends Bloc<QuestionEvent, QuestionState> {
  QuestionValidatorBloc questionValidatorBloc;
  StreamSubscription subscription;

  MainPageBloc({@required this.questionValidatorBloc}) {
    subscription= questionValidatorBloc.state.listen((state) {
      if (state is ValidateSuccess) {
        dispatch(YourEvent());
      } else if(state is ValidateError{
        dispatch(AnotherEvent());
      }
    });
  }

...
Run Code Online (Sandbox Code Playgroud)

现在您只需要将 传递QuestionValidatorBlocQuestionBloc构造函数。

  • 如果我在这个集团内部需要另一个集团怎么办?我说的是在 bloc 内部使用 2+ bloc。我可能会有 2 个订阅,但我该如何嵌套它呢?另一个状态监听器中的状态监听器是不好的方法:/我被困住了 (2认同)