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的继承关系

    class Navigator extends StatefulWidget {
    }

但是我的代码是这样的

    class MyApp1 extends StatelessWidget {
    }

我们需要使用StatefulWidget的Context


 
4、解决办法

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

用MaterialApp启动

    class MaterialApp extends StatefulWidget {
    ***
    }

 




 
作者:chen.yu
深信服三年半工作经验,目前就职游戏厂商,希望能和大家交流和学习,
微信公众号:编程入门到秃头 或扫描下面二维码
零基础入门进阶人工智能(链接)