Flutter:当原来的目标页面被替换后如何获取pop值?
Flutter: How to get a pop value when the original target page has been replaced?
假设我有三个页面,A、B 和 C。
从页面 A 我有一个 FloatingActionButton
导航到页面 B,其中包含 return 值的 then()
语句。如果 return 值等于 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页弹出,'link'A页then()
语句中的return值变为C页pop()
语句中的值而不是 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);
});
},
假设我有三个页面,A、B 和 C。
从页面 A 我有一个 FloatingActionButton
导航到页面 B,其中包含 return 值的 then()
语句。如果 return 值等于 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页弹出,'link'A页then()
语句中的return值变为C页pop()
语句中的值而不是 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);
});
},