私はフラッターとブロックパターンの比較的新しいですので、私はまだ私の頭をすべての周りに包み込もうとしています。
ファイルから質問を取得するためにリポジトリを使用するブロックがあるQuestionBloc
というBlocを持っているクイズアプリがあるとしましょう。 QuestionBloc
上のイベント
FetchQuestion
QuestionBloc
上の状態
QuestionEmpty
QuestionLoading
QuestionLoaded
QuestionError
その後、質問に対する答えを検証する責任がある責任があるQuestionValidatorBloc
という別のBlocを持っています。回答はテキストフィールドに入力され、検証をトリガーするための送信ボタンがあります。 QuestionValidatorBloc
上のイベント
ValidateQuestion
QuestionValidatorBloc
上の状態
ValidateInitial
ValidateInProgress
ValidateSuccess
ValidateError
これはかなり簡単です。ただし、それらのうちの1つが質問の取得と表示を担当する責任があるため、QuestionBloc
とQuestionValidatorBloc
の両方を同じウィジェットに組み込む必要があります。どうやってこれを達成できますか?
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
コンストラクタに渡す必要があります。