flutter - Flutter:原目标页面被替换后如何获取pop值?
问题描述
假设我有三个页面,A、B 和 C。
从页面 AIFloatingActionButton
导航到页面 B 并then()
声明返回值。如果返回值等于false
什么都没有发生,在任何其他情况下页面 A 将被刷新:
FloatingActionButton(
onPressed: () {
Navigator.of(context).pushNamed(B.routeName).then((value){
if (value != false){
_refresh(); // My own function to refresh page A
}
});
},
...
)
在页面 B 中,我Scaffold
只有一个背景屏幕和一个FloatingButton
. 按钮指向页面 C,而点击屏幕将返回页面 A,无需刷新。
Scaffold(
body: GestureDetector(
onTap: () {
Navigator.of(context).pop(false);
},
...
),
FloatingActionButton(
onPressed: () {
Navigator.of(context).pushReplacementNamed(C.routeName);
},
...
),
)
我的问题是,当我单击浮动操作按钮转到页面 C 时,会弹出页面 B,并且页面 A 在其then()
语句中获取空值。
如何避免页面 B 弹出,并将then()
页面 A 的语句中的返回值“链接”到pop()
页面 C 而不是 B 的语句值?
这里真正的问题是当我弹出页面C时页面A不会刷新,因为它then()
已经由页面B触发,而不是页面B弹出时它刷新的事实。
解决方案
在页面 B 而不是pushReplacementNamed中,您可以在页面 c 中推送并等待结果,然后当它返回值时,您可以弹出到页面 A,在页面 B 中您可以编写:
onPressed: () {
Navigator.of(context).pushNamed(C.routeName).then((value){
Navigator.of(context).pop(false);
});
},
推荐阅读
- svgpanzoom - 从 svg-pan-zoom 获取当前缩放和平移值
- regex - 在 Google 表格中使用 RegEx 替换插入转义序列
- html - 如何在 3 行中动态居中对齐 3+ div?
- c# - WebRequest WebResponse 操作已超时
- angular - Angular 8 更新 - 构建生产失败
- c# - 在长时间操作之前禁用 WPF 中的按钮
- string - 如何防止 Morphia 在 MongoDb 中存储空字符串
- java - 通过spring MVC从表中查询数据并转换成需要的JSON格式
- java - 如何构建 AOSP 以获取 jar 文件?
- python - Windows 中没有名为“_swigfaiss”的模块