如何在 Flutter 中重置 Navigator.pop 回调值?

How do I reset the Navigator.pop call back value in Flutter?

请容忍我下面的解释。 我有一个包含 2 个 BottomNavigationBar 项目的页面:

Page1(),
Page2(),

Page1 中有一个按钮可以导航到另一个名为 PostSomethingPage 的页面:

// in Page1
onPressed: () => Navigator.push(
   context, MaterialPageRoute<bool>(builder: 
     (context) => PostSomethingPage()))
        .then((isPostSuccess) => isPostSuccess 
          ? print('is Success!') : print('Failed!'));

您可以看到 Page1 需要 PostSomethingPage 的 return 布尔值并将基于它进行打印。

这是 PostSomethingPage 中的代码 return 结果:

// in PostSomethingPage
Navigator.pop(context, isSuccess);

然后一旦我们回到Page1,回调的值已经被接收并相应地执行了打印语句,此时一切似乎都很好。

但是当我导航到 Page2 并返回到 Page1 时出现问题
注意:此时我已经从 Page1 => PostSomethingPage => 返回 Page1 结果,然后转到 Page2

因为当我再次回到 Page1 时,打印语句将根据最后的已知值再次打印。但我想要的是将回调值重置为空,而不是 truefalse

使用变量存储值 return by PostSomethingPage

//our variable initialized with null
bool isPostSuccess;

@override
Widget build(BuildContext context) {
  return FlatButton(onPressed: () async {
    //going to PostSomethingPage from Page1
    isPostSuccess = await Navigator.of(context).push(
        MaterialPageRoute<bool>(builder: (context) {
          return PostSomethingPage();
        })
    );
  }, child: Text(''));
  //we are back at the Page1
  //isPostSuccess will not be null
}

现在,在转到第 2 页之前,只需再次将 isPostSuccess 的值设置为 null

    //going to Page2 from Page1
    isPostSuccess = null;
    Navigator.of(context).push(
        MaterialPageRoute<bool>(builder: (context) {
          return Page2();
        })
    );