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