私の質問は、blocパターンで使用されるナビゲーションについてです。
LoginScreenウィジェットには、ブロックのEventSinkにイベントを追加するボタンがあります。 blocはAPIを呼び出し、ユーザーを認証します。問題は、LoginScreenウィジェットのどこでストリームをリッスンする必要があるか、および成功ステータスが返された後に別の画面に移動する方法です。
私が自分自身を明確にしたことを願っています。ありがとう!
BlockListenerを使用します。
BlocListener(
bloc: _yourBloc,
listener: (BuildContext context, YourState state) {
if(state is NavigateToSecondScreen){
Navigator.of(context).Push(MaterialPageRoute(builder: (BuildContext context) {return SecondScreen();}));
}
},
child: childWidget
)
このようなもの:
if (state is PhoneLoginCodeSent) {
// dispatch here to reset PhoneLoginFormState
SchedulerBinding.instance.addPostFrameCallback((_) {
Navigator.of(context).Push(
MaterialPageRoute(
builder: (context) {
return VerifyCodeForm(phoneLoginBloc: _phoneLoginBloc);
},
),
);
return;
});
}