我有一个从底部选项卡NAV调用的页面,它执行initState函数,然后我通过单击按钮导航到一个页面,该页面有详细信息和要执行的操作,但是当我单击Back按钮转到原始页面时,initState不会再次运行,我发现因为当您将一个页面放在顶部时,Flutter 不会 destruct 页面,由于NAV不在新页面上,因为它不在菜单中,我如何在单击Back按钮时使initState再次运行,或者是否有其他方法来监听该导航
任何帮助都会很好.
我有一个从底部选项卡NAV调用的页面,它执行initState函数,然后我通过单击按钮导航到一个页面,该页面有详细信息和要执行的操作,但是当我单击Back按钮转到原始页面时,initState不会再次运行,我发现因为当您将一个页面放在顶部时,Flutter 不会 destruct 页面,由于NAV不在新页面上,因为它不在菜单中,我如何在单击Back按钮时使initState再次运行,或者是否有其他方法来监听该导航
任何帮助都会很好.
您可以覆盖AppBar
上的默认后退箭头,然后指定您想要返回的值,以在调用Navigator.pop
时触发状态更改:
Pseudo-Code个
所以你需要在你的导航按钮的onPressed
回调中有这样的东西
onPressed: ()async{
var nav = await Navigator.of(context).push(newRoute);
if(nav==true||nav==null){
//change the state
}
},
在你的新路由上应该有这样的东西
new AppBar(
leading: new IconButton(
icon: new Icon(Icons.arrow_back),
onPressed: (){Navigator.pop(context,true)}
),
我正在判断值null
或true
,因为当用户点击android屏幕上的BackButton(屏幕底部的那个)时,会返回空值.我还相信,在flatter中,null也将与默认的BackButton一起返回,因此实际上不需要重写leading
属性,但我自己还没有判断过,因此可能值得判断.