【发布时间】:2020-12-06 15:58:11
【问题描述】:
我需要在我的 LoginBloc 中访问 AuthenticationBloc,以便在登录成功时触发 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(),
);
}
}
如您所见,用户当前在 LoginScreen 中,一旦登录成功,我需要在 AuthenticationBloc() 中产生 AuthenticationAuthenticated() 状态,这样我的用户将被定向到 HomePage()
如何在我的 LoginBloc() 中产生 AuthenticationBloc() 的 AuthenticationAuthenticated() 状态 - 因为我的登录逻辑发生在 LoginBloc 中。
【问题讨论】:
-
嗨!这并不完全清楚。如果登录成功,你想在 Authenticationlogin() 事件中做什么。导航到另一个页面?
-
我需要调用 AuthenticationLogin() 事件,以便它可以产生新状态 - AuthenticationAuthenticated() 并导航到 HomePage()。我将编辑我的问题以使其更清楚,感谢您指出这一点
标签: dart bloc flutter-bloc