【问题标题】:element data not refreshing元素数据不刷新
【发布时间】:2021-01-18 06:25:23
【问题描述】:

//在提交点击时为对话框调用不同的类,它不会更新列表数据

它正在刷新数据,但不会转到第二个选项卡上最后打开的选项卡我执行此操作,但点击时,它会转到第一个选项卡上。

onTap: () {
       setState(() {
         Navigator.pushReplacement(context, 
          MaterialPageRoute(builder: (context) => 
          EmployeePersonalDetailsUpdateActivity(_token),));
          widget.listener.onEmployeeFamilyClick(_day, _month, _year, 
          _working);
     });
 Navigator.pop(context,true);
}   

【问题讨论】:

  • 你想改变当前屏幕吗?
  • 是的,此操作在对话框类上执行,点击后,它将返回活动类我的问题它没有使用 widget.listener 我调用 API 刷新列表数据。
  • 得到了你的问题,如果你使用 flutter_bloc 来处理这个问题,imo 会更容易。
  • 为什么你先调用pushReplacement,然后从导航器调用pop
  • 您应该从您离开的屏幕调用pop,而不是从您打开其他屏幕的屏幕调用。尝试在不调用setState 的情况下导航到其他屏幕并在那里进行所需的操作。

标签: flutter navigation


【解决方案1】:

您在导航后调用您的 widget.listener,在您导航路线之前调用它,如果您想将 api 响应传递给 EmployeePersonalDetailsUpdateActivity 小部件,您必须处理它,当您想刷新您的屏幕。

setState(() {
 widget.listener.onEmployeeFamilyClick(_day,_month,_year,_working);
 Navigator.pushReplacement(context, MaterialPageRoute(builder: 
         (context) => EmployeePersonalDetailsUpdateActivity(_token),));
       });

还有另一种方式:

widget.listener.onEmployeeFamilyClick(_day,_month,_year,_working).then((value) {
       Navigator.pushReplacement(context, MaterialPageRoute(builder: 
             (context) => EmployeePersonalDetailsUpdateActivity(_token), value));
    });

您可以导航您的小部件并传递响应的值并在小部件上显示更新的值。

【讨论】:

  • 我尝试了两种解决方案都无法正常工作,而第二种解决方案出现错误。
  • 使用导航器如何定义特定选项卡的路由,以便在对话框关闭时从中选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多