如何在 flutter 中使用 navigatorKey 传递下一个屏幕的值?

How to pass value next screen using navigatorKey in flutter?

我正在使用 bloc 状态管理。 并使用 NavigatorState 导航屏幕,但现在需要将值传递到下一个屏幕,但在这里,不知道如何使用 `NavigatorState.

将值传递到屏幕
class AppView extends StatefulWidget {
  @override
  _AppViewState createState() => _AppViewState();
}

class _AppViewState extends State<AppView> {
  final _navigatorKey = GlobalKey<NavigatorState>();

  NavigatorState get _navigator => _navigatorKey.currentState;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: theme,
      navigatorKey: _navigatorKey,
      builder: (context, child) {
        return BlocListener<AuthenticationBloc, AuthenticationState>(
          listener: (context, state) {

            switch (state.status) {
              case AuthenticationStatus.authenticated:
                _navigator.pushAndRemoveUntil<void>(
                  Home.route(),
                  (route) => false,
                );
                   

                  // Navigator.of(context).pushAndRemoveUntil(
                  //   MaterialPageRoute(builder: (context)=> 
                  //    Home( currentUser:state.user)), (route) => false);
                
                 
              
                break;
              case AuthenticationStatus.unauthenticated:
                _navigator.pushAndRemoveUntil<void>(
                AuthPage.route(), //LoginPage
                  (route) => false,
                  
                );
                break;

                 case AuthenticationStatus.unknown:
                _navigator.pushAndRemoveUntil<void>(
                  SplashPage.route(),
                  (route) => false,
                );
                break;
              default:
                break;
            }
          },
          child: child,
        );
      },
      onGenerateRoute: (_) => SplashPage.route(),
    );
  }
}

上面评论的代码不起作用,出现异常

Unhandled Exception: Navigator operation requested with a context that does not include a Navigator.

尝试_navigator.currentState.pushAndRemoveUntil

我已经通过替换找到了解决方案 这个:

 _navigator.pushAndRemoveUntil<void>(
                  Home.route(),
                  (route) => false,
                );

有了这个:

  _navigator.pushAndRemoveUntil( MaterialPageRoute(builder: (context)=> 
                     Home( currentUser:state.user)), (route) => false);