【问题标题】:Flutter, How to refresh the last page state on Navigator.popFlutter,如何刷新 Navigator.pop 上的最后一页状态
【发布时间】:2019-11-21 18:48:27
【问题描述】:

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

有可能吗?

【问题讨论】:

    标签: android ios flutter dart back


    【解决方案1】:

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

    p1:

    refreshState() {
      // change your state to refresh the screen
    }
    
    Navigator.push(context, MaterialPageRoute(builder: (context) => p2()),).then((res) => refreshPage());
    

    p2:

    Navigator.pop(context);
    

    【讨论】:

      【解决方案2】:

      是的,你可以。

      当你推送一个新页面时,你可以有它的弹出回调。

      // 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 回调以及参数。

      【讨论】:

      • 什么是refreshPage,如何实现?
      • @MohitC refreshPage() 是您的自定义代码块或任何您的代码逻辑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2018-09-24
      • 2019-05-19
      • 2021-04-30
      相关资源
      最近更新 更多