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 ...
随机推荐
- 收藏!了解UART总线工作原理看这一篇就够了!
原文:玩转单片机 2019-08-24 16:50:29 越学到后面,基础知识更加不能忘记,温故而知新~~ 还记得当年的打印机,鼠标和调制解调器吗?他们都有巨大笨重的连接器和粗电缆,并且必须拧到你的电 ...
- LOJ2265. 「CTSC2017」最长上升子序列
题意:中文题意很清楚 LOJ2263 分析: 根据Dilworth定理,最小链覆盖=最长反链. 问题转化为求 $k$ 个最小不上升序列能覆盖的最大数的个数. 参考链接: 1. https://blog ...
- 15分钟入门Markdown
一.标题一 标题三 标题六 # 一.标题一 ### 标题三 ###### 标题六 二.字体 1.普通字体 字体加粗 斜体 斜体加粗 删除线 1.普通字体 **字体加粗** *斜体* ***斜体加粗** ...
- 利用Js的console对象,在控制台打印调式信息测试Js
一次偶然的机会,打开百度的时候按下了F12,然后就见控制台里面输出了百度的招聘广告,感觉挺帅气的,再然后就有了这篇博文. 既然可以这样在控制台输出信息,那以后再调试Js的时候不就可以省去很多麻烦了嘛! ...
- P4475 巧克力王国 k-d tree
思路:\(k-d\ tree\) 提交:2次 错因:\(query\)时有一个\(mx\)误写成\(mn\)窝太菜了. 题解: 先把\(k-d\ tree\)建出来,然后查询时判一下整个矩形是否整体\ ...
- 010_STM32程序移植之_lib库建立
STM32之lib库建立 1. 测试环境:STM32C8T6 2. 测试接口: 3.串口使用串口一,波特率9600 单片机引脚------------CH340引脚 VCC-------------- ...
- redis数据存储--C++连接redis
一.下载的是Redis Windows版本:下载地址:https://github.com/microsoftarchive/redis:解压到:E:\Software\redis-3.0: 二.用V ...
- C语言学习笔记7-字符串
本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/50752405 作者:jadeshu 邮箱: jades ...
- 内存管理3- @property 参数详解
@property ----------------- Create two classes: Book & Student ------------------- book.m #impor ...
- Codeforces 1276D/1259G Tree Elimination (树形DP)
题目链接 http://codeforces.com/contest/1276/problem/D 题解 我什么DP都不会做,吃枣药丸-- 设\(f_{u,j}\)表示\(u\)子树内,\(j=0\) ...