我有一个从底部选项卡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)}
        ),

我正在判断值nulltrue,因为当用户点击android屏幕上的BackButton(屏幕底部的那个)时,会返回空值.我还相信,在flatter中,null也将与默认的BackButton一起返回,因此实际上不需要重写leading属性,但我自己还没有判断过,因此可能值得判断.

Flutter相关问答推荐

当第二页在单独的小工具中使用Navigator.pop时,Navigator.push不起作用

在保持标高=1的情况下更改AppBar立面 colored颜色 /遮罩

如何从DART中的事件列表中获取即将到来的日期

如何在Flutter 中共享选定文本

如何在Ffltter 3.16中设置标准的提升按钮主题?

使用ImageFilter模糊并剪裁同一renderObject中的元素

在创建显示此错误的Flutter 深度链接时

Flutter Web Dio XMLHttpRequest 上传大文件时出错

如何在 Flutter 中创建厚度沿着容器逐渐减小的边框

Flutter:如何设置 PersistentFooterButtons 背景?

找不到任何与 com.google.firebase:firebase-sessions:[15.0.0, 16.0.0) 匹配的版本

如何在flutter中实现这样的底部导航栏?

输入处于活动状态时如何设置文本字段标签的样式?

Flutter:如何从运行时创建的列表中访问单个子部件的值

MediaQuery 在不同手机上不一致

在向 Google Route API 发送 HTTP Post 请求期间发生错误,

Flutter Bloc 使用 Cubit 监听流和emits 状态

Android: 从 URI 获取音频元数据

Flutter 本地通知在最新版本中不起作用

为什么这个循环只发生一次?Flutter /dart