Flutter路由管理和接收页面的返回值
Flutter使用Navigator
进行路由管理。
跳转页面
使用Navigator的push方法进行跳转。可以看到总共有6个push方法
1、push(route) 通过路由跳转
通过路由进行跳转
Navigator.of(context).push(MaterialPageRoute(builder: (context){return MyApp();}));
也可以直接使用Navigator.push(context, route)
进行跳转,直接push的方法里面还用调用的 Navigator.of(context).push(route)。如下图
2、pushNamed(routeName) 通过路由名称跳转
调用该方法前需要先到MaterialApp下注册路由表,然后给路由命名
注册路由表
routes: {"my_app" : (context) => MyApp(),//其它路由},
routes是一个Map集合,key就是路由名
通过路由名跳转:
Navigator.of(context).pushNamed("my_app");
3、pushAndRemoveUntil()和pushNamedAndRemoveUntil()
还是通过路由和路由名跳转的,和上面两个区别是使用此方法跳转的路由会处于栈顶,并把之前的路由清除掉。类似于Android
singleTask启动模式。
Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (context)=>MyApp()),(route)=>route == null);
使用此方法跳转到新页面,在按返回键则会直接退出程序。
Navigator.of(context).pushNamedAndRemoveUntil("my_app",(route)=>route == null);
4、pushReplacement()和pushReplacementNamed()
路由替换,第二个参数result是个可选参数,如果不传就替换成newRoute,如果传则替换成result。
Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context)=>MainPage())});Navigator.of(context).pushReplacementNamed("my_app");
pop()出栈,关闭页面
关闭当前页面
Navigator.of(context).pop();
接收上个页面的返回值
所有的push方法都会有个Future回调。我们可以在Future中接收返回值。
Future future = Navigator.of(context).pushNamed("my_app");future.then((value){});
future的回调方法中会收到一个value值。
pop([ T result ])
pop有个可选参数result,关闭页面的时候传递一个result给上个界面
Navigator.of(context).pop("test");
上个页面的future就会收到值为test的回调
Flutter路由管理和接收页面的返回值相关推荐
- Bolt 的 Flutter 路由管理实践(页面解耦,流程控制、功能拓展等)
在各大移动开发框架(Android.iOS.Flutter.React Native-)中,路由管理始终是 UI 架构最具热议的话题之一. 一大原因就是应用程序的页面会 不可避免的多,我们可以使用 B ...
- Flutter路由管理和页面参数的传递(获取返回)
前言 在做 Flutter 开发的时候所有的页面以及页面上的元素都变成了 Widget ,创建一个页面或者视图直接 new 一个新的 widget 就可以,相关的参数我们可以直接通过构造函数直接传递. ...
- Flutter路由管理和页面参数的传递(源码分析)
前言 上一篇 Flutter路由管理和页面参数的传递(获取&返回) 文章中我们讲述了这么用代码实现 Flutter 中页面参数的传递,这一篇我们用源码分析一下 Navigator 为什么可以进 ...
- Flutter系列-flutter路由管理
Flutter路由管理 初识路由概念 一.路由管理 1.1.Route 1.2.MaterialPageRoute 1.3.Navigator 1.4.路由传值 1.5 命名路由 1.6.命名路由参数 ...
- Flutter路由管理代码这么长长长长长,阿里工程师怎么高效解决?(实用)
背景: 在flutter的业务开发过程中,flutter侧会逐渐丰富自己的路由管理.一个轻量的路由管理本质上是页面标识(或页面路径)与页面实例的映射.本文基于dart注解提供了一个轻量路由管理方案. ...
- 【C 语言】C 项目开发代码规范 ( 形参合法性判断 | 函数返回值局部变量 | 函数中不用全局变量 | 函数中使用局部变量接收形参 | 函数返回值 | 形参作返回值 | 形参返回值处理 )
文章目录 一.C 项目开发代码规范 一.C 项目开发代码规范 上一篇博客 [C 语言]字符串模型 ( 键值对模型 ) 中 , 完成了字符串的 键值对 查找功能 , 代码不太规范 ; C 项目开发代码规 ...
- cmd管道无法接收特定程序返回值_渗透不会反弹shell?来教你写一个cmd的shell
渗透不会反弹shell?来教你写一个cmd的shell 包含的库: #include #include #include #include #include #pragma comment(lib, ...
- JDBC和JPA调用储存过程 接收存储过程有返回值
============jdbc========================================== --java代码:一个输出参数-- String connURL = null; ...
- jsp中接收java的返回值_jsp中request的一些方法返回值
在页面上打印如下内容,通过服务器本地和客户端异地调用的结果如下 String url111 = request.getRequestURI(); System.out.println("ur ...
最新文章
- 报javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception异常 的解决方案...
- Java高并发编程基础之AQS
- python网上编程课程-什么是Python编程课程
- 一句话设置当前控制器的view跟随键盘起伏,妈妈再也不用担心键盘挡住输入框了...
- linux课程设计qq,仿QQ聊天系统课程设计.doc
- 【Python】第一个程序---Helloworld!
- 全网首发:神奇的WORD文字渲染效果,18个字符一组,每个字符渲染效果不同
- 计算机3d相册代码,CSS3实现3D旋转相册(示例代码)
- Redis报错:WRONGTYPE Operation against a key holding the wrong kind of value
- 【参考文献】软骨细胞生长培养方法
- 计算机及应用课程实验,计算机网络及应用课程实验指导书
- 考研:研究生考试(五天学完)之《线性代数与空间解析几何》研究生学霸重点知识点总结之第四课欧氏空间
- python生成exe运行慢_利用pyinstaller生成exe文件碰到的一些问题及解决方法
- Pell方程初识以及技巧性的求解Pell方程整数解(附带手推详细证明)
- 超硬核!MySQL优化从执行计划开始(explain超详细)
- QQ收集表图片批量导出
- 格子路径问题-施罗德数
- 用c语言写一个简易的四则运算计算器
- [LINUX]解决Linux下ubuntu 20.04暂时不能解析域名“cn.archive.ubuntu.com”问题
- 专升本英语 学习笔记
热门文章
- SSD_装了ssd后,右下角的那个安全删除硬件的标志要怎么去掉?
- 二等水准测量记录数据_二等水准测量记录计算示例.doc
- 重读经典(CLIP上):《Learning Transferable Visual Models From Natural Language Supervision》
- python3下载手机安卓版,python3.0手机版下载
- 【HigherHRNet】 HigherHRNet 详解之 HigherHRNet的热图回归代码
- 【抽样技术】CH2 简单随机抽样
- ati自定义分辨率_真三国无双7游戏自定义分辨率的修改方法
- 同花顺面经(二面挂)
- Android 强大的图片加载缓存— Glide
- ear的英语怎么念_ear英语怎么读谐音