Flutter提示之Navigator operation requested with a context that does not include a Navigator.

简介: Flutter提示之Navigator operation requested with a context that does not include a Navigator.

1 、问题

Flutter写了页面跳转,提示错误如下

Navigator operation requested with a context that does not include a Navigator.


2 、我的代码

void main() {
  runApp(MyApp1());
}
class MyApp1 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'open url',
      home: Scaffold(
          appBar: AppBar(
            title: Text('hello flutter'),
          ),
          body: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              FlatButton(
                child: Text("go to new page"),
                textColor: Colors.blue,
                onPressed: () {
                    Navigator.push(context, MaterialPageRoute(
                      builder:(context) => NewPage()));
                },
              ),
            ],
          ),
      ),
    );
  }
}
class NewPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
      return Scaffold(
        appBar: AppBar(
            title: Text("hello word"),
        ),
        body: Center(
           child: Text("this is new page"),
        ),
      );
  }
}


3、原因

Navigator operation requested with a context that does not include a Navigator.


说明这个context上下文不一致,我们看下Navigator的继承关系

1. class Navigator extends StatefulWidget {
2. }


但是我的代码是这样的

1. 
class MyApp1 extends StatelessWidget {
2. }


我们需要使用StatefulWidget的Context


4、解决办法

void main() {
    runApp(MaterialApp(
    title: "Navigation basics",
    home: MyApp1(),
  ));
}


用MaterialApp启动

1. class MaterialApp extends StatefulWidget {
2. ***
3. }

 


相关文章
|
存储 Android开发 iOS开发
flutter系列之:Navigator的高级用法
上篇文章我们讲到了flutter中navigator的基本用法,我们可以使用它的push和pop方法来进行Router之间的跳转。 在flutter中一个Router就是一个widget,但是在Android中,一个Router就是Activity,在IOS中,一个Router是一个ViewController。 Router除了之前讲过的push和pop方法之外,还有一些更加高级的用法,一起来看看吧。
flutter系列之:Navigator的高级用法
|
Android开发 iOS开发
flutter 路由管理- Navigator的push和pop
Navigator类是flutter一个路由管理的组件,通过一个栈来管理活动路由集合,通常当前屏幕显示的页面就是栈顶的路由。
1006 0
|
存储 前端开发
flutter系列之:在flutter中使用导航Navigator
一个APP如果没有页面跳转那么是没有灵魂的,页面跳转的一个常用说法就是Navigator,flutter作为一个最为优秀的前端框架,Navigator肯定是必不可少的,那么在flutter中如何使用Navigator呢? 一起来看看吧。
flutter系列之:在flutter中使用导航Navigator
|
Android开发 开发者
Flutter教程 — 路由管理与Navigator进阶使用(老油条看了都说好!!!)
在上一节我们已经讲了Flutter路由管理与Navigator基础使用,有兴趣或者对这一块还不太了解的同学可以去看看。 但是仅仅这样时不够的 在实际项目中这些怎么会够呢???现在让我们来看看这些骚操作…
Flutter教程 — 路由管理与Navigator进阶使用(老油条看了都说好!!!)
|
前端开发 程序员
Flutter路由管理与Navigator基础使用
Flutter的路由管理与Navigator基础使用
Flutter路由管理与Navigator基础使用
|
ARouter
flutter之从零开始搭建(二)之 Navigator路由
flutter之从零开始搭建(二)之 Navigator路由
185 0
flutter之从零开始搭建(二)之 Navigator路由
|
容器
【错误记录】Flutter 界面跳转报错 ( Navigator operation requested with a context that does not include a Naviga )
【错误记录】Flutter 界面跳转报错 ( Navigator operation requested with a context that does not include a Naviga )
482 0
【错误记录】Flutter 界面跳转报错 ( Navigator operation requested with a context that does not include a Naviga )
Flutter环境问题:Requested 'libusbmuxd >= 1.1.0' but version of libusbmuxd is 1.0.10
版权所有,转载请注明出处 最近有同学反应不能为flutter正确配置iOS开发环境,当执行brew install --HEAD libimobiledevice时会遇到一个问题: brew install --HEAD libimobiledevice ==> Cloning [https://git.
1232 0
|
1月前
|
缓存 监控 前端开发
【Flutter 前端技术开发专栏】Flutter 应用的启动优化策略
【4月更文挑战第30天】本文探讨了Flutter应用启动优化策略,包括理解启动过程、资源加载优化、减少初始化工作、界面布局简化、异步初始化、预加载关键数据、性能监控分析以及案例和未来优化方向。通过这些方法,可以缩短启动时间,提升用户体验。使用Flutter DevTools等工具可助于识别和解决性能瓶颈,实现持续优化。
【Flutter 前端技术开发专栏】Flutter 应用的启动优化策略
|
30天前
|
前端开发 C++ 容器
Flutter-完整开发实战详解(一、Dart-语言和-Flutter-基础)(1)
Flutter-完整开发实战详解(一、Dart-语言和-Flutter-基础)(1)