资讯专栏INFORMATION COLUMN

flutter页面间跳转和传参-Navigator的使用

andycall / 729人阅读

摘要:概述中的默认导航分成两种,一种是命名的路由,一种是构建路由。命名路由这种路由需要一开始现在创建的时候定义然后就可以在程序中使用来跳转这种路由的缺点是不能传递参数。

概述

flutter中的默认导航分成两种,一种是命名的路由,一种是构建路由。

命名路由

这种路由需要一开始现在创建App的时候定义

new MaterialApp(
      ....
      routes: {
        "nameRoute":(BuildContext context)=>new SecondPage(),
      },
    );

然后就可以在程序中使用Navigator.pushNamed来跳转

 Navigator.pushNamed(context, "nameRoute");

这种路由的缺点是不能传递参数。

构建路由

在push的时候使用自定义方法构建一个路由

Navigator.push(context, new MaterialPageRoute(builder: (BuildContext context){
   return new ThirdPage(title:"请输入昵称");
}))

这种方式就可以传递参数了。

返回上一页并携带参数

使用Navigator的pop返回可返回上一级,并携带一个参数

 Navigator.pop(context,"携带参数");
接收路由返回的参数

注意push系列的方法返回值是一个Future,可以用来接收参数

 Navigator.pushNamed(context, "nameRoute").then( (String value){
   //处理代码
});


 Navigator.push(context, new MaterialPageRoute(builder: (BuildContext context){

    return new ThirdPage(title:"请输入昵称");

  })).then( (String result){

       //处理代码

  });

注意这里dart中的泛型使用方法后面加上<泛型参数>,与java不一样。

遇到的坑
Navigator operation requested with a context that does not include a Navigator.
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.

原因:

直接在MaterialApp中push是不行的,要加一层,变成这样:

暂时总结为:要使用Navigator,根元素不能是MaterialApp

完整代码在这里:

https://github.com/jzoom/flut...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/17071.html

相关文章

  • 还在写iOS?是时候学一下Flutter

    摘要:而在中,我们可以将看做是,但它与并不是完全等价的。中包含有状态和无状态,分别用和表示。在中,由于是不可变的,没有与等价的功能函数。在中,要是先透明需要使用透明的包装一下才能实现。近似于中的,的工作机制和中的一致。文章概述 本人之前主要从事iOS开发工作,刚好Flutter文档中有一篇Flutter for iOS developers的文档,之前两篇文章,我们大致上体验了Flutter,这篇...

    wqj97 评论0 收藏0
  • 还在写iOS?是时候学一下Flutter

    摘要:而在中,我们可以将看做是,但它与并不是完全等价的。中包含有状态和无状态,分别用和表示。在中,由于是不可变的,没有与等价的功能函数。在中,要是先透明需要使用透明的包装一下才能实现。近似于中的,的工作机制和中的一致。文章概述 本人之前主要从事iOS开发工作,刚好Flutter文档中有一篇Flutter for iOS developers的文档,之前两篇文章,我们大致上体验了Flutter,这篇...

    番茄西红柿 评论0 收藏0
  • Flutter系列:3.APP基础设施搭建

    摘要:中的导航有点类似的方式,都是通过栈的方式来管理路由页面。就是中管理导航路线的,注意管理的是页面导航的路线,称为的东西而不是像中直接管理的,而每个则可以通过来指定显示的,同时也提供了对栈操作的方法,和。 前言 在上一篇文章Flutter系列:2.实现一个简单的登录界面通过一个简单的登录页面带入了Flutter中页面构建的方式以及一些简单控件的使用;在开发一个app前首要的任务往往是搭建a...

    xuexiangjys 评论0 收藏0
  • Android 原生app获取用户授权访问Autodesk云应用数据

    摘要:机制对于网站间的授权管理是很容易实现的,设置好回调端口,当数据服务提供方拿到其用户授权,则返回授权码发送到回调端口。上一篇文章介绍了如何授权访问云应用数据,即,获取三条腿的。用户授权后,将对地址回传,也就是发起请求的。 oAuth机制对于网站间的授权管理是很容易实现的,设置好app回调端口,当数据服务提供方拿到其用户授权,则返回授权码发送到回调端口。上一篇文章介绍了如何授权Forge ...

    zsy888 评论0 收藏0
  • 加推Weex实践之路(上)

    摘要:我们参考小程序的设计思路进行了优化升级,为每一个需要特有化配置的页面添加一个格式的配置文件,配置文件包括导航栏的配置页面级别的配置跳转的配置等,将配置工程化标准化。设置导航栏按钮包含按钮样式的数组通过完成按钮事件的回调。一、背景1.为什么是Weex在公司快速发展的大环境下,App的更新迭代高速、高频,技术团队平均两周便可诞生一款中型App,但App团队只有6个人(iOS 、Android各3...

    shuibo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<