如何修复颤振异常:使用不包含导航器的上下文请求导航器操作

Ben*_*leb 3 android flutter

我正在尝试使用颤振框架创建抽屉导航,但每次运行时都会出现以下异常

引发了另一个异常:使用不包含导航器的上下文请求的导航器操作。

那么解决方案是什么,有什么帮助吗?

我使用 Navigator 类如下

void main() {
  runApp(new MyApp());
}

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return new AppStates();
  }
}

class AppStates extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build

    return MaterialApp(
      home: new Scaffold(
        appBar: AppBar(
          title: Text("Application App Bar"),
        ),
        drawer: Drawer(
          child: ListView(
            children: <Widget>[
              ListTile(
                title: Text("Next Page"),
                onTap: () {
                  Navigator.push(context,
                      MaterialPageRoute(builder: (context) => NextPage()));
                },
              )
            ],
          ),
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

NextPage 类的代码是

class NextPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text("Next Page App Bar"),
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 6

您似乎没有针对当前上下文的导航器设置。您应该尝试将 MaterialApp 作为您的根应用程序,而不是使用 StatefulWidget。MaterialApp 为您管理导航器。这是如何在 main.dart 中设置应用程序的示例

void main() {
 runApp(MaterialApp(
   title: 'Navigation Basics',
   home: MyApp(),
 ));
}
Run Code Online (Sandbox Code Playgroud)