flutter 从新页面返回旧页面时传参(pop传参)

这篇博客探讨了在动态网页中如何实现页面间的参数传递。具体场景是从做题页面跳转到答题卡页面,再从答题卡页面返回做题页面时携带题号参数。解决方案是使用异步函数commit_return,在跳转时保存状态,并在返回时通过pop操作传递变量。这种方法涉及到前端路由管理、页面状态管理和组件通信。

项目场景:

从做题页面点击答题卡按钮可以跳转到答题卡页面,从答题卡页面点击题号返回到做题页面,需要传题号参数。


问题描述:

从新页面返回到旧页面时,希望传参数回旧页面


解决方案:

在从旧页面push到新页面时,编写一个函数commit_return,如图所示在这里插入图片描述
在这里插入图片描述
需要注意的是
1、异步(async、await)
2、设变量result为pop返回的变量,push还是正常的push
3、由于是动态网页,所以设setstate更改变量值

新页面pop回旧页面的代码:在这里插入图片描述
直接在pop中写入要返回的变量即可

Flutter 中实现页面返回传递参数并刷新页面,可以通过 `Navigator.pop` 方法传递返回值,并结合 `then` 或 `await` 来接收返回参数,从而触发页面刷新。以下是一个详细的实现方案。 ### 使用 `Navigator.pop` 返回参数 在跳转到新页面,可以使用 `Navigator.push` 或 `Navigator.pushNamed` 方法,而在返回,通过 `Navigator.pop(context, returnValue)` 传递参数。 例如,在页面跳转使用 `push` 方法: ```dart final result = await Navigator.push( context, MaterialPageRoute( builder: (context) => SecondPage(), ), ); ``` 在 `SecondPage` 中,可以通过 `pop` 返回值: ```dart Navigator.pop(context, "返回的数据"); ``` 在页面返回后,`result` 将包含返回的值,此可以触发页面刷新逻辑。 ### 接收返回参数并刷新页面 在接收返回值后,可以通过调用 `setState` 来刷新页面内容。例如: ```dart ElevatedButton( onPressed: () async { final result = await Navigator.push( context, MaterialPageRoute( builder: (context) => SecondPage(), ), ); if (result != null) { // 刷新页面逻辑 setState(() { // 更新数据源 }); } }, child: const Text("跳转并刷新"), ) ``` ### 使用 `pushNamed` 实现命名路由跳转并返回参数 如果使用命名路由,同样可以通过 `Navigator.pushNamed` 和 `arguments` 传递参数,并在返回使用 `pop` 传递结果。 跳转携带参数: ```dart final result = await Navigator.pushNamed( context, "/secondPage", arguments: {"param1": "value1"}, ); ``` 在目标页面中获取参数返回结果: ```dart final args = ModalRoute.of(context)!.settings.arguments as Map<String, String>; // 使用 args 获取参数 Navigator.pop(context, "更新后的数据"); ``` 在页面返回后,同样通过 `setState` 触发刷新。 ### 模拟分页加载并刷新列表 在需要刷新列表的情况下,例如模拟分页加载,可以在页面返回后更新数据源并刷新 UI: ```dart List<String> items = []; void loadMoreItems() { // 模拟异步加载 Future.delayed(Duration(seconds: 1), () { setState(() { items.addAll(List.generate(10, (index) => "Item ${items.length + index}")); }); }); } ``` 在页面返回后,可以重新调用 `loadMoreItems` 来刷新数据。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值