web-dev-qa-db-fra.com

Flutter Bloc Pattern - Comment naviguer vers un autre écran après un événement de flux?

ma question concerne la navigation utilisée avec le modèle de bloc.

Dans mon widget LoginScreen, j'ai un bouton qui ajoute un événement dans le EventSink du bloc. Le bloc appelle l'API et authentifie l'utilisateur. La question est de savoir où, dans le widget LoginScreen, je dois écouter le flux et comment naviguer vers un autre écran après avoir renvoyé un état de réussite.

J'espère que je me suis bien fait comprendre. Merci!

13
Sebastian

Utilisez 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
shashikant durge

quelque chose comme ça:

 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