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);
});

},