Мне нужно получить доступ к AuthenticationBloc в моем LoginBloc, чтобы я мог запустить событие AuthenticationLogin () в случае успешного входа в систему. То, что я сделал до сих пор, не работает.
Что я сделал:
class LoginBloc extends Bloc<LoginEvent, LoginState> {
final AuthenticationBloc authenticationBloc;
final AuthenticateCredentialsUsecase authenticateCredentialsUsecase;
//code
Stream<LoginState> mapEventToState(
LoginEvent event,
) async* {
//code
authenticationBloc.add(AuthenticationLogin());
yield LoginLoadSuccess();
//code
}
}
Чего я пытаюсь достичь:
class _AppViewState extends State<AppView> {
final _navigatorKey = GlobalKey<NavigatorState>();
NavigatorState get _navigator => _navigatorKey.currentState;
@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorKey: _navigatorKey,
builder: (context, child) {
return BlocListener<AuthenticationBloc, AuthenticationState>(
listener: (context, state) {
if (state is AuthenticationAuthenticated) {
_navigator.pushAndRemoveUntil<void>(
HomePage.route(),
(route) => false,
);
}
else if (state is AuthenticationUnauthenticated){
_navigator.pushAndRemoveUntil<void>(
LoginScreen.route(),
(route) => false,
);
}
},
child: child,
);
},
onGenerateRoute: (_) => SplashPage.route(),
);
}
}
Как вы можете видеть, пользователь в настоящее время находится на экране входа в систему, после успешного входа в систему мне нужно передать состояние AuthenticationAuthenticated () в моем AuthenticationBloc (), чтобы мои пользователи были направлены на HomePage ()
Как я могу получить состояние AuthenticationAuthenticated () для AuthenticationBloc () внутри моего LoginBloc () - поскольку моя логика входа происходит внутри LoginBloc.