Flutter,如何刷新Navigator.pop上的最后一页状态

时间:2019-11-20 09:49:53

标签: android ios flutter dart back

我必须翻页,p1和p2。启动应用程序时,您位于p1上并可以打开p2。我希望当您使用后退按钮离开p2时,刷新p1状态(例如再次调用initState()而不用Navigator.push或WillPopScope创建新路由)。

有可能吗?

2 个答案:

答案 0 :(得分:1)

弹出第二个屏幕后,您可以调用一种方法来刷新您的第一页状态。

p1:

refreshState() {
  // change your state to refresh the screen
}

Navigator.push(context, MaterialPageRoute(builder: (context) => p2()),).then((res) => refreshPage());

p2:

Navigator.pop(context);

答案 1 :(得分:1)

是的,可以。

当您推送一个新页面时,您可以使用其弹出回调。

// If you want to get particular type of data arguments, then can add it with MaterialPageRoute<Data_Type_Value_You_Want_In_Return>
Navigator.push(context, MaterialPageRoute<bool>(builder: (context) => page2()),).then((bool res) {
      // check here if you got your data or not
      if(res!=null && res==true){
        refreshPage();
      }
    });

在下一个屏幕中

// Let say if i want to pass bool value arguments then pass it inside pop method.
Navigator.of(context).pop(true);

因此,在混乱中,您可以传递get pop回调以及参数。