用于从导航器推送或弹出路由的上下文必须是导航器小部件的后代小部件的上下文

Tak*_*aki 5 flutter

我正在尝试从第一个屏幕导航到另一个屏幕,所以基本上,我正在检查用户是否已登录,并根据该情况导航或不导航到下一个屏幕,但我收到以下错误尝试时的上下文

这是我的代码

Future _AuthenticateUser(BuildContext context){
  FirebaseAuth.instance
      .authStateChanges()
      .listen((event) {
      if(event == null){
      // User is null
     } else {

        // here I navigate to the next screen
        Navigator.push(context,
            MaterialPageRoute(builder: (context) => new MainScreen()));

    }
  });
}
Run Code Online (Sandbox Code Playgroud)

我首先调用代码来检查用户登录状态

 @override
  void didChangeDependencies() {
    _AuthenticateUser(context);
    super.didChangeDependencies();

  }
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误

The context used to push or pop routes from the Navigator must be that of a widget that is a descendant of a Navigator widget.
Run Code Online (Sandbox Code Playgroud)

小智 0

首先让我们知道为什么会出现这个错误。

static Future<T> push<T extends Object>(BuildContext context, Route<T> route) {
  return Navigator.of(context).push(route);
}
Run Code Online (Sandbox Code Playgroud)

上面的推送功能“推送”在上下文中搜索导航器并将您的屏幕推到上面,所以我可以得出的结论是您需要检查父母是否有导航器......