Flutter 路由 页面间跳转和传参 返回
Navigator
Navigator用来管理堆栈功能(即push和pop),在Flutter的情况下,当我们导航到另一个屏幕时,我们使用Navigator.push方法将新屏幕添加到堆栈的顶部。当然,这些pop方法会从堆栈中删除该屏幕。
在push的时候使用自定义方法构建一个路由
- Navigator.push(
- context,
- MaterialPageRoute(builder:(context) => new InfoPage(product: products[index]))
- );
这种方式可以传递参数。
使用Navigator的pop返回可返回上一级,并携带一个参数
- Navigator.pop(context,'携带参数');
push和pushNamed
push与pushNames运行效果相同,只是接口的调用方式不同, 都是将一个界面压入栈中. 区别在于, push是亲手把界面扔入栈中, 而pushNames则是通过点名的方式通过router让界面自己进入栈中
- // push的调用方法
- Navigator.push(context, new MaterialPageRoute(
- builder: (context) {
- return Scaffold(
- appBar: AppBar(
- title: Text('我是新的界面'),
- )
- );
- }
- ));
- // pushNamed的调用方法
- // 先在Router上定义Page;
- routes: <String, WidgetBuilder> {
- '/xiaoming': (_) => new XiaoMingPage(),
- }
- ...
- Navigator.pushNamed(context, '/XiaoMingPage');
实例地址:https://www.cnblogs.com/joe235/p/11242354.html
- Navigator.of(context)..pop()..pop();
替换路由:
比如A页面点击注册,跳到B页面,B页面点击下一步跳到C页面,C页面点击完成跳回A页面。
在B页面点击下一步的时候,使用替换路由跳到C页面,这时如果点击左上角返回按钮,直接返回到A页面。
- Navigator.of(context).pushReplacementNamed('/registerSecond'); //替换路由
子页面向父级页面pop()传参
返回数据的方式:
- Navigator.pop(context,'xxx'); //xxx就是返回的参数
pop()传参是当页面B返回到页面A时,页面A通过.then()接收,代码如下:
- Navigator.push(
- context,
- MaterialPageRoute(builder: (BuildContext context){
- return PageB(
- userName: '张三',
- userAge: '18岁',
- );
- })).then((userInfo){
- setState(() {
- backResult = userInfo;
- });
- });
在B页面中直接把需要传的参数放入pop()中即可,代码如下:
- String userInfo = '对不起,今天已经打过卡了!';
- Navigator.of(context).pop(userInfo);
直接返回根,主页面:
- //表示把前面导航置为空,记得要引入IndexPage页
- Navigator.of(context).pushAndRemoveUntil(
- new MaterialPageRoute(builder:(context) => new IndexPage()),
- (route) => route == null
- );
返回BottomNavigationBarItem指定页面:
首先要修改IndexPage页
- class IndexPage extends StatefulWidget {
- final index; //增加index参数
- IndexPage({Key key,this.index = }) : super(key: key); //不传默认0
- _IndexPageState createState() => _IndexPageState(this.index);
- }
- class _IndexPageState extends State<IndexPage> {
- _IndexPageState(index){ //增加构造函数
- this.currentIndex = index;
- }
- //int currentIndex = 0; //当前索引
- int currentIndex; //当前索引
- }
当前代码页:
- //返回指定tab页
- Navigator.of(context).pushAndRemoveUntil(
- new MaterialPageRoute(builder:(context) => new IndexPage(index:)),
- (route) => route == null //表示把前面导航置为空,要引入IndexPage页
- );
Flutter 路由 页面间跳转和传参 返回的更多相关文章
- flutter页面间跳转和传参-Navigator的使用
flutter页面间跳转和传参-Navigator的使用 概述 flutter中的默认导航分成两种,一种是命名的路由,一种是构建路由. 命名路由 这种路由需要一开始现在创建App的时候定义 new M ...
- 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/
- (day68)Vue-CLI项目、页面跳转和传参、生命周期钩子
目录 一.Vue-CLI (一)环境搭建 (二)项目的创建 (三)项目目录结构 (四)Vue组件(.vue文件) (五)全局脚本文件main.js(项目入口) (六)Vue请求生命周期 二.页面跳转和 ...
- 微信小程序开发:学习笔记[8]——页面跳转及传参
微信小程序开发:学习笔记[8]——页面跳转及传参 页面跳转 一个小程序拥有多个页面,我们可以通过wx.navigateTo推入一个新的页面.在首页使用2次wx.navigateTo后,页面层级会有三层 ...
- JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
<script src="jquery.min.js" type="text/javascript"></script> <scr ...
- app之间的跳转和传参问题
app 之间跳转和传参: 首先 创建2个app formApp (需要跳转到另外app的项目) toApp(被跳转的项目) 一:在toApp 项目中的操作: 1:创建URLSchemes ...
随机推荐
- WebLogic 12c 版 下载与安装(ubuntu)
下载地址:https://www.oracle.com/middleware/technologies/fusionmiddleware-downloads.html 参考地址:https://blo ...
- adb端口被自己占用,或者用adb连不上模拟器最终解决办法
1.下载360手机助手 2.找一个安卓手机连接上电脑,安装驱动 3.手机助手可以连接手机 4.拔掉手机开启模拟器以后都可以用adb连接模拟器了 找到占用端口的程序,禁止其运行 1.首先找到占用5037 ...
- 003_软件安装之_Visual Studio 2012
Visual Studio 2012安装,里面有视频教程,还有秘钥,连接失效联系我 2012版: 链接:https://pan.baidu.com/s/1BRE46cTKJW58YZ3lBFyjMw ...
- sql 存储过程记录
-- exec sp_helptext add_book1 CREATE proc add_book1 --创建存储过程 @DocCode VARCHAR() --创建参数 as BEGIN INSE ...
- 可以粘贴Word文档中图片的编辑器
Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧?Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能.但是无法 ...
- ftp、sftp、vsftp、vsftpd、lftp以及一些网络客户端工具命令
ftp 是File Transfer Protocol的缩写,文件传输协议,用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式.它属于网络传输协议的应用层.了解更多ftp lftp :是一个 ...
- Spring Cloud Eureka(六):Eureka Client 如何注册到Eureka Server
1.本节概要 根据前文我们对Eureka Server 有了一定的了解,本节我们主要学习Eureka Client 与 Eureka Server 如何通讯的及相关通信机制是什么,本文会弄清楚一下几个 ...
- 树莓派中将caplock映射为esc键
据说,喜欢vimer都呵caplock有仇,明明caplock占着原来esc的位置,却从来没有起到应有的作用,你说气人吗,没关系,我改啊:将下面语句加入到.bashrc中,启动即可xmodmap -e ...
- jinja2-模版简介
一 简介 在Flask中,调用render_template来对模版进行渲染,使用render_template,只需要导入这个API就可以,from flask import render_temp ...
- pwn学习日记Day14 《程序员的自我修养》读书笔记
目标文件:计算机科学中存放目标代码的计算机文件,包含着机器代码,代码在运行时使用的数据,调试信息等,是从源代码文件产生程序文件这一过程的中间产物. 目标代码(objectcode)指计算机科学中编译器 ...