我对Flutter和BLoC模式还比较陌生,所以我仍在努力将一切包裹住。
假设我有一个测验应用程序,其中有一个名为QuestionBloc
的BLoC,它使用存储库从文件中提取问题。
FetchQuestion
QuestionBloc
QuestionEmpty
上的状态
QuestionLoading
QuestionLoaded
QuestionError
包含一个问题对象QuestionValidatorBloc
然后我有另一个名为QuestionValidatorBloc
的BLoC,它负责验证问题的答案。答案将输入到文本字段中,并且存在一个提交按钮以触发验证。
ValidateQuestion
QuestionValidatorBloc
ValidateInitial
上的状态
ValidateInProgress
ValidateSuccess
ValidateError
QuestionBloc
这很简单。但是,现在我需要将QuestionValidatorBloc
和{{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
构造函数即可。