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



我试图从第一个屏幕导航到另一个屏幕,所以基本上,我检查用户是否登录并基于此导航到下一个屏幕,但我在尝试时得到一个上下文错误

这是我的代码

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()));
}
});
}

我首先调用代码来检查用户日志状态

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

这是我得到的错误

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.

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

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

上述push函数"push"在上下文中搜索导航器并将屏幕推到上面所以我得出的结论是你需要检查父节点是否有导航器....

最新更新