flutter页面间跳转和传参-Navigator的使用
flutter页面间跳转和传参-Navigator的使用
概述
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<String>(context, "nameRoute").then( (String value){
//处理代码
});
Navigator.push<String>(context, new MaterialPageRoute(builder: (BuildContext context){
return new ThirdPage(title:"请输入昵称");
})).then( (String result){
//处理代码
});
- 用于登录逻辑到进入app用户页面的逻辑
注意,在push页面时,安卓机自带的返回键使可以直接返回push前的一个页面,这样容易产生登录后又点击返回键退出登录的情况,为解决这种影响用户使用的问题,考虑使用下面给出的push方法
Navigator.pushReplacementNamed(context, '/homePage');
使用Navigator.pushReplacementNamed()可以直接替换当前页面为push进入的页面,而不是在页面栈里继续叠加,进而避免了退出登录的情况发生,而是直接退出App。
- 使用一个页面替换当前的页面栈
在页面栈过于深入,而你需要抛弃所有的页面栈内容,并使用另一个页面进行替换时,该需求大多出现在退出登录时,避免出现明明已经退出登录,但点击返回键还可以重新进入登陆状态。
Navigator.pushNamedAndRemoveUntil(context, '/loginPage',
ModalRoute.withName("/loginPage"));
flutter页面间跳转和传参-Navigator的使用的更多相关文章
- Flutter 路由 页面间跳转和传参 返回
Navigator Navigator用来管理堆栈功能(即push和pop),在Flutter的情况下,当我们导航到另一个屏幕时,我们使用Navigator.push方法将新屏幕添加到堆栈的顶部.当然 ...
- spring mvc controller间跳转 重定向 传参(转)
spring mvc controller间跳转 重定向 传参 url:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ ...
- spring mvc controller间跳转 重定向 传参 (转)
转自:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景 需求:spring MVC框架contr ...
- Spring Mvc Controller间跳转 重定向 传参 (转)
原文链接:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景 需求:spring MVC框架con ...
- spring mvc controller间跳转 重定向 传参
http://blog.csdn.net/jackpk/article/details/19121777/
- 微信小程序开发:学习笔记[8]——页面跳转及传参
微信小程序开发:学习笔记[8]——页面跳转及传参 页面跳转 一个小程序拥有多个页面,我们可以通过wx.navigateTo推入一个新的页面.在首页使用2次wx.navigateTo后,页面层级会有三层 ...
- (day68)Vue-CLI项目、页面跳转和传参、生命周期钩子
目录 一.Vue-CLI (一)环境搭建 (二)项目的创建 (三)项目目录结构 (四)Vue组件(.vue文件) (五)全局脚本文件main.js(项目入口) (六)Vue请求生命周期 二.页面跳转和 ...
- JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
<script src="jquery.min.js" type="text/javascript"></script> <scr ...
- app之间的跳转和传参问题
app 之间跳转和传参: 首先 创建2个app formApp (需要跳转到另外app的项目) toApp(被跳转的项目) 一:在toApp 项目中的操作: 1:创建URLSchemes ...
随机推荐
- ClientValidationFunction
CustomValidator.ClientValidationFunction 属性 获取或设置用于验证的自定义客户端脚本函数的名称. 命名空间: System.Web.UI.WebContro ...
- 将给定数据源生成静态HTML页面持久化到项目之外的硬盘
一.java代码 设置好数据源map Map<String,String> map=new HashMap<>(); map.put("knowledgeName&q ...
- 在 Docker 的 CentOS7 镜像 中安装 mysql
在 Docker 的 CentOS7 镜像 中安装 mysql 本来以为是个很简单的过程居然折腾了这么久,之前部署云服务器时也没有好好地记录,因此记录下. 特别提醒:本文的操作环境是在 Docker ...
- 动态规划精讲(一)LC最长公共子序列
P1439 [模板]最长公共子序列 题目描述 给出1,2,-,n 的两个排列P1 和P2 ,求它们的最长公共子序列. 输入格式 第一行是一个数 n. 接下来两行,每行为 n 个数,为自然数 1,2 ...
- vue项目实现文件下载进度条
平时业务中下载文件方式常见的有俩种: 第一种,直接访问服务器的文件地址,自动下载文件: 第二种 ,服务器返回blob文件流,再对文件流进行处理和下载. 一般小文件适用于第一种下载方案,不占用过多服务器 ...
- MySql WorkBench通过表生成表关系图
1.mysql workbench 菜单file=>add model(添加模型) 点击上面的add diagram(添加新的图解),就会在右边多出一个新的图解模型 2,mysql workbe ...
- linux centos系统 php安装GD库扩展
yum --enablerepo=remi-php56 install php-gd php-mysql php-mbstring php-xml php-mcrypt //安装GD库扩展 servi ...
- Shell系列(5)- 输出输入重定向及wc命令
输出重定向: 在Linux当中,0代表输入:1代表正确输出:2代表错误输出 类型 符号 作用 正确输出重定向 命令 > 文件 以覆盖得方式,把命令得正确输出,输出到指定文件或设备当中 命令 &g ...
- 封装excel导出方法
封装读取excel内容方法 /** * 获取Excel内容 * @param type $filename * @return type */ public function getExcelCont ...
- k8s-PodApi对象
init容器 pod的生命周期钩子 资源限制 podApi对象概览 apiVersion + kind 一个是版本 一个是资源组 共同确定当前yaml由谁来管理 metadata元数据 用来唯一标 ...