Flutter Navigator.popUntil 参数传递

Flutter 使用页面传参

以下是 在flutter 中页面传参的常用形式,都可以有有直接的传值参数提供。

  • Navigator.push                             #跳转到指定页面 压栈路由表
  • Navigator.pushReplacement        #关闭当前页面   跳转到指定页面压栈路由表
  • Navigator.pushAndRemoveUntil  #关闭所有页面,清空路由表   跳转到指定页面压栈路由表,那么当前页面就是 路由表的第一个(只有当前这个页面)
  • Navigator.pop                               #关闭当前页面 出栈路由表(移除当前路由表)
Navigator.popUntil

 Navigator.popUntil 函数可以是我们 跳回到指定页面,并且出栈掉中间的页面,但是这个函数 并没有直接可以使用的传递参数的位置。这个经过查阅资料 找到一种方案可以 跨多个页面传递参数:参考地址
Navigator.popUntil 传递参数icon-default.png?t=N7T8https://medium.com/@naikraveena40/how-to-return-data-when-using-popuntil-31b62d93f4aa

第一步: 

在跳转到需要接收 参数的页面的时候,跳转参数先配置下,这样可以记录在路由表中相应的字段中,否则再给这个字段(route.settings.arguments)赋值的时候 会为 null,不能进行赋值;

比如我这里是实际是是一个订单的列表:

因为订单详情中(可以有多个页面跳转), 多个页面 均可以对订单进行状态的修改,为了解决频繁刷新的不友好, 再返回在订单列表中如果对订单状态进行了更改 则更新对应的状态,

这里对跳转到订单页面的函数做参数的改造:

AppNavigator 为了方便自己封装的路由方法;功能类似于 Navigator.push

# AppNavigator 为了方便自己封装的路由方法;功能类似于 Navigator.push# PageOrderList 订单列表本身不需要传递参数///之前的  不用传递参数
AppNavigator().navigateTo(const PageOrderList());///现在为了拿到 Navigator.popUntil 返回来的参数,这里要传递个 数据
AppNavigator().navigateTo(const PageOrderList(), arguments: {'result': {},
});
第二步: 

 然后我们再 需要接收参数的页面(我这里就是这个订单列表)

///跳转到退货退款页面  应为这个页面还会跳转到填写订单物流页面,提交更改,
Map? map = await AppNavigator().navigateTo(PageDrawbackDetail(orderInfo: _datum,),
);///普通 Navigator.pop 返回当前页面 的接收返回参数的方式
if (map != null && map.isNotEmpty) {setState(() {_datum = map;});
}///使用 Navigator.popUntil 返回当前页面 的接收返回参数的方式
if (ModalRoute.of(context)?.settings.arguments != null) {final arguments =ModalRoute.of(context)?.settings.arguments as Map;final result = arguments['result'];print('填写快递信息 result $result');if (result != null) {setState(() {_datum = result;});}
}
第三步: 
Navigator.popUntil 函数的处理,就是对路由表中的字段进行赋值,因为这个 route.settings.arguments 字段默认是一个null(不提前赋值是没办法 复制的应为是一个null),并且是个 final类型,所有只能通过 引用类型的方式给他赋值,
navigateBackTo(BuildContext context, String pageName, {Object? arguments}) {Navigator.popUntil(context, (route) {if (route.settings.name == pageName) {if (arguments != null && route.settings.arguments != null) {(route.settings.arguments as Map)['result'] = arguments;}return true;}return false;});
}

经过上面的操作你就可以顺利拿到 通过 Navigator.popUntil 返回页面的参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/35210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript的学习之自增自减

目录 一、自增 第一种:a 第二种:a 二、自减 一、自增 定义:可以是变量在自身的基础上增加1 自增分为两种:后(a)和前(a) 无论是a和a都会立即使原变量的值增1,不同的使…

【windows】电脑如何关闭Bitlocker硬盘锁

如果你的硬盘显示这样的一把锁,说明开启了Bitlocker硬盘加密。 Bitlocker硬盘锁,可以保护硬盘被盗,加密防止打开查看数据。 方法一:进入“控制面板->BitLocker 驱动器加密”进行设置。或者“控制面板\系统和安全->BitLocke…

排序算法系列二:归并排序、快速排序

零、说在前面 本文是一个系列, 入口请移步这里 一、理论部分 1.4:归并排序 1.4.1:算法解读: 使用二分法和插入排序两种算法的思想来实现。流程分为“拆分”、“合并”两大部分,前者就是普通的二分思想,将…

电商平台数据功能封装API需要注意些什么?如何调用封装后的API?

一、引言 随着电商行业的蓬勃发展,电商平台的数据功能愈发复杂多样,如何高效、安全地管理和使用这些数据成为了电商平台开发者面临的重要问题。API(Application Programming Interface)作为不同软件之间进行通信的桥梁&#xff0…

预警与校准并行:可燃气体报警器在矿区井下甲烷泄露防控中的应用

在矿区井下作业中,甲烷泄露是一个严重威胁工人生命安全和矿区生产安全的隐患。因此,及时、准确地预警甲烷泄露并采取相应的处理措施显得尤为重要。 可燃气体报警器作为一种有效的监测工具,在预防甲烷泄露事故中发挥着不可替代的作用。 在这…

STM32HAL库 -- RS485 开发板通信(速记版)

在本章中, 我们将使用 STM32F429的串口 2 来实现两块开发板之间的 485 通信(半双工)。 RS485 简介 485(一般称作 RS485/EIA-485)隶属于 OSI 模型物理层,是串行通讯的一种。电气特性规定为 2 线,半双工,多…

CVPR 2024最佳论文分享:文本到图像生成的丰富人类反馈

CVPR(Conference on Computer Vision and Pattern Recognition)是计算机视觉领域最有影响力的会议之一,主要方向包括图像和视频处理、目标检测与识别、三维视觉等。近期,CVPR 2024公布了最佳论文。共有10篇论文获奖,其…

如何实现智慧农田的精准灌溉

如何实现智慧农田的精准灌溉 智慧农田的精准灌溉是现代农业技术发展的重要组成部分,它集成了物联网、大数据分析、人工智能以及现代水利技术,旨在通过实时监测土壤湿度、气象条件及作物生长状况,实现水资源的高效利用和作物产量、品质的双重…

解决2021版IDEA新建没有Server问题

2024-06-27可用 我是这样解决的,仅供参考 IDEA软件是2021.1.1版 导入Tomcat的Servlet包,就解决了,详见下图操作 1. 打开项目结构 2. 选Libraries 3. 找到Tomcat安装路径 比如我安装在了“C:\soft”目录,就去这个目录找 然后记得…

基于Cardinal的AWD攻防平台搭建与使用以及基于docker的题目环境部署

关于 CTF 靶场的搭建与完善勇师傅前面已经总结过了,参考: CTF靶场搭建及Web赛题制作与终端docker环境部署_ctfoj搭建-CSDN博客 基于H1ve一分钟搭好CTF靶场-CSDN博客 Nginx首页修改及使用Nginx实现端口转发_nginx 修改欢迎首页-CSDN博客 关于H1ve导…

cPanel的SSL证书续订方法

在现代互联网环境中,SSL证书对于保障网站的安全和数据加密至关重要。下面我们将介绍如何在cPanel中续订SSL证书,并适时结合Hostease服务器的优势,帮助您更好地理解和操作。 生成私钥和CSR(证书签名请求) 难易程度&am…

Unity中模拟抛物线(非Unity物理)

Unity中模拟抛物线非Unity物理 介绍剖析问题以及所需公式重力加速度公式:h 1/2*g*t*t(h 1/2 * g * t ^ 2)速度公式:Vt V初 a * t 主要代码总结 介绍 用Unity物理系统去做的抛物线想要控制速度或者想要细微的控制一些情况是非常困难的。所以想要脱离U…

国产CPU兆芯发展分析

国产信创CPU-兆芯CPU CPU:信创根基,国之重器 国产CPU已形成自主架构、x86、ARM三大阵营。自主架构以龙芯、申威的LoongArch、SW-64为代表;ARM阵营由鲲鹏、飞腾领军,依托ARM授权开发处理器;x86阵营则以海光、兆芯等品牌…

基于halcon的眼在手外(Eye-to-Hand)标定

前言 上个月写了一个《基于halcon的眼在手上(Eye-in-Hand)标定》的文章,通过官方的示例代码进行了简单的叙述,想学习的小伙伴可以点击链接进行学习。之前博主认为眼在手上(Eye-in-Hand)的案例更多&#xff…

leetcode209:长度最小的子数组

题目链接&#xff1a;209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {int n nums.size();if(n 0) return 0;int end 0, start 0, sum 0, ans 0x3f3f3f3f;while…

OpenAI将终止对中国提供服务,国内模型接棒

说起来&#xff0c;OpenAI自始至终就没有对中国提供过服务&#xff0c;OpenAI官方支持的国家和地区&#xff1a;https://platform.openai.com/docs/supported-countries 列表里面没有“Chinese”的选项&#xff0c;那为什么又要明令禁止呢&#xff0c;国类IT高手们&#xff0…

day001 环境的配置与工具的安装

VMware的软件包&#xff1a;https://pan.xunlei.com/s/VNs1KShnlZalTSJtejXXzchlA1?pwdudy5# 其他的软件可以在电脑管家中下载&#xff0c;注意不要安装到c盘&#xff0c;否则影响开机速度。 虚拟机工具&#xff1a;VMware17.5.1 1&#xff0c; 2&#xff0c; 3&#xff0c…

欢乐钓鱼大师攻略:卡鱼骨、典藏鱼、藏宝图怎么钓?

《欢乐钓鱼大师》是一款以钓鱼为核心玩法的休闲模拟手游&#xff0c;通过逼真的画面和丰富的钓鱼体验吸引了大量玩家。本文将为你详细介绍这款游戏的亮点、常见问题以及一些实用的游戏技巧&#xff0c;帮助你在《欢乐钓鱼大师》中获得更愉快的游戏体验。 辅助工具 1. 辅助工具…

内网安全【5】隧道搭建

1.内网穿透工具 Ngrok Frp Spp Nps EW(停更) 一共是这五个 优点&#xff1a;穿透加密数据&#xff0c;中间平台&#xff0c;防追踪&#xff0c;解决网络问题 Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器 https://github.com/esrrhs/spp https://github.com/fatedie…

计算机网络之数据通信原理(中)

上节内容传送口&#xff1a;数据通信原理基础 1.数据传输方式 1.1并行传输 并行传输: 字符编码的各个比特同时传输 特点&#xff1a; 一个比特时间内可传输一个字符&#xff0c;传输速度快&#xff0c;每个比特传输要求一个单独的信道支持&#xff0c;通信成本高&#xf…