Flutter BLoC多个BLoC相同的小部件

时间:2019-08-01 13:05:16

标签: flutter dart bloc

我对Flutter和BLoC模式还比较陌生,所以我仍在努力将一切包裹住。

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

上的事件
  • QuestionBloc

QuestionEmpty上的状态

  • QuestionLoading
  • QuestionLoaded
  • QuestionError包含一个问题对象
  • QuestionValidatorBloc

然后我有另一个名为QuestionValidatorBloc的BLoC,它负责验证问题的答案。答案将输入到文本字段中,并且存在一个提交按钮以触发验证。 ValidateQuestion

上的事件
  • QuestionValidatorBloc

ValidateInitial上的状态

  • ValidateInProgress
  • ValidateSuccess
  • ValidateError
  • QuestionBloc

这很简单。但是,现在我需要将QuestionValidatorBloc和{{1}}都合并到同一个小部件中,因为它们中的一个负责获取和显示问题,另一个负责处理验证动作。我该如何实现?

1 个答案:

答案 0 :(得分:1)

我假设您正在使用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());
      }
    });
  }

...

现在,您只需要将QuestionValidatorBloc传递给QuestionBloc构造函数即可。