一尘不染

单击后退按钮时如何执行

flutter

我有一个从底部选项卡导航调用的页面,该页面执行initState函数,然后我通过单击按钮导航到具有详细信息和要执行的操作的页面,但是当我单击后退按钮转到原始页面时,initState不会再次运行,我发现由于Flutter不会在您将页面放在顶部时破坏页面,因为NAV不在新页面中(因为它不在菜单中),如何使initState在单击后退按钮时再次运行?还有另一种方法可以监听后退按钮并运行需要更新数据的代码?

任何帮助都会很棒。


阅读 296

收藏
2020-08-13

共1个答案

一尘不染

您可以覆盖上的默认后退箭头AppBar,然后指定在Navigator.pop调用时要返回的值以触发状态更改:

伪代码

因此您需要在onPressed导航按钮的回调中包含类似的内容

onPressed: ()async{
            var nav = await Navigator.of(context).push(newRoute);
            if(nav==true||nav==null){
              //change the state
            }
          },

在你的newRoute中,你应该有这样的东西

new AppBar(
        leading: new IconButton(
          icon: new Icon(Icons.arrow_back),
          onPressed: (){Navigator.pop(context,true)}
        ),

我正在检查这两个值,null或者true是因为当用户在android屏幕上(屏幕底部的一个)点击BackButton时返回了空值。我还相信,Flutter中的默认BackButton也会返回null,因此您实际上不需要覆盖该leading属性,但是我没有自己检查一下,因此可能值得检查。

2020-08-13