Manera correcta de manejar la navegación usando BLoC

Hola, chicos, estoy usando BLoC para la aplicación que estoy desarrollando actualmente, pero hay algunos casos que no tengo idea, como cuando inicias sesión, llamas a la API y esperas el resultado, naturalmente, enviaría el estado de carga y mostrar el cargador, pero después de eso termina cómo manejar, por ejemplo, navegar a diferentes pantallas. Actualmente tengo algo como esto

typedef void LoginSuccessCallback();
    class LoginBloc(){
    LoginBloc(Api this.api,LoginSuccessCallback loginSuccesCallback){
      _login.switchMap((ev) => api.login(ev.payload.email,ev.payload.password)).listen((_) => loginSuccessCallback);
     }
    }

Pero estoy seguro de que hay una forma mucho más limpia de manejar esto. Intenté buscar algunas muestras que tienen algo similar pero no pudieron encontrar nada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta