1、背景flutter 在做Navigator.push跳转时,出现Navigator operation requested with a context that does not include a Navigator.问题。
2、问题原因:问题复现主要在MaterialApp的home参数下面直接调用Navigator.push xxx, 报了问题1
为什么?因为context上下问并非是MaterialApp的context上下文。而是MyApp的父类不含MaterialApp
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: FlatButton(onPressed: () {
Navigator.pushNamed(context, "xxx");
}, child: Text("跳转")),
);
}
}
3、解决方案:给home一个具体的子树,然后做跳转
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SubHome(),
);
}
}
class SubHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FlatButton(onPressed: () {
Navigator.pushNamed(context, "xxx");
}, child: Text("跳转"));
}
}