web-dev-qa-db-ja.com

Flutter Bloc Pattern-ストリームイベント後に別の画面に移動する方法

私の質問は、blocパターンで使用されるナビゲーションについてです。

LoginScreenウィジェットには、ブロックのEventSinkにイベントを追加するボタンがあります。 blocはAPIを呼び出し、ユーザーを認証します。問題は、LoginScreenウィジェットのどこでストリームをリッスンする必要があるか、および成功ステータスが返された後に別の画面に移動する方法です。

私が自分自身を明確にしたことを願っています。ありがとう!

13
Sebastian

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
)
3

このようなもの:

 if (state is PhoneLoginCodeSent) {
          // dispatch here to reset PhoneLoginFormState
          SchedulerBinding.instance.addPostFrameCallback((_) {
            Navigator.of(context).Push(
              MaterialPageRoute(
                builder: (context) {
                  return VerifyCodeForm(phoneLoginBloc: _phoneLoginBloc);
                },
              ),
            );
            return;
          });
        }
0
user11065582