单击后退按钮时如何执行
问题内容:
我有一个从底部选项卡导航调用的页面,该页面执行initState函数,然后我通过单击按钮导航到具有详细信息和要执行的操作的页面,但是当我单击后退按钮转到原始页面时,initState不会再次运行,我发现由于Flutter不会在您将页面放在顶部时破坏页面,因为NAV不在新页面中(因为它不在菜单中),如何使initState在单击后退按钮时再次运行?还有另一种方法可以监听后退按钮并运行需要更新数据的代码?
任何帮助都会很棒。
问题答案:
您可以覆盖上的默认后退箭头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
属性,但是我没有自己检查一下,因此可能值得检查。