Flutter基础:Navigator路由跳转
简介
Flutter中页面之间的跳转是由Navigator完成的,Navigator用来实现不同Widget之间的跳转和数据传递。本文介绍页面跳转的两种方式及数据传递,满足日常开发需求。
页面跳转
先看效果
直接跳转
Navigator.push(BuildContext context, Route route)
Flutter提供的Navigator支持直接跳转。如图所示:
Navigator调用push方法将SecondNavigatorRoute()实例 压入栈中,进行页面显示。
注册跳转
Navigator.pushNamed(String routeName, arguments: arguments)
Flutter不仅提供了直接跳转还支持自定义路由跳转,使用 Navigator.pushName()函数,传入需要跳转页面的路由,实现页面跳转,但是路由必须先要进行注册。类似Android中的Activity需要在清单文件中注册一样。页面路由也需要注册。
- 首页在MyApp中进行路由注册。
routes 接收map作为值。定义路由和对应的页面,将secondNavigatorRoute对应的路由注册进去。
- 注册完路由后,使用Navigator.pushName进行页面跳转。
跳转返回
Navigator.pop(BuildContext context, [ result ])
页面之间的跳转使用Navigator的push方法,对应的跳转返回需要调用Navigator的pop方法进行页面的关闭。
页面传值
Navigator.pushNamed(String routeName, arguments: arguments)
和Intent一样,Flutter中的Navigator不仅可以进行页面之间的跳转,还可以进行页面的传值。
Navigator的push方法的第二个参数arguments类型为可空的Object。通常用来表示需要传递的数据。
先看效果:
在第一页跳转时,给arguments参数赋值,当跳转到第二页时,接收第一页传递过来的数据。
接收传递的数据:
使用ModalRoute.of(context)?.settings.arguments.toString() 接收第一页传递过来的数据,这里传递的是字符串,所以直接toString显示,如果传递的是map,接收时需要转换成map接收。对比android,使用Flutter进行页面传递数据不需要对数据进行序列化。
数据回传
Navigator.pop(BuildContext context, [ T? result ])
在日常开发中我们都会遇到这样的场景,从相册中获取图片,回传给上一个页面,Flutter同样支持数据的回传。
先来看Navigator.pop的构造函数。
Navigator.pop函数同样提供了result参数,用来回传数据。下面看看具体使用。
当第二页收到第一页传递来的数据后,需要做出回应。这里调用Navigatpr.pop方法,同时回传数据告诉第一页数据已经收到。
由于接收返回数据是耗时操作,这里使用async 和await接收返回是数据。
数据打印如下:
总结
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfgjiji
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01