You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter ReorderableListView拖拽列表不显示WebService返回数据问题

问题原因
  • Flutter StatefulWidget 仅当调用setState方法时才会触发UI重绘,你在异步请求接口拿到数据、往listeTaches列表新增元素后没有触发重绘逻辑,build方法一直使用初始的静态数据渲染组件,因此接口返回的数据不会展示在页面上。
  • getTaches是异步方法,执行顺序上initState调用该方法后,不会等待接口返回就会先执行首次build,接口数据返回后仅修改了内存中的列表,没有通知框架更新UI,就会出现控制台能打印全量数据、页面仅展示静态数据的现象。
修复方案

只需在getTaches方法中完成列表数据更新后调用setState触发重绘即可,修改后的getTaches代码如下:

void getTaches() async {
  Session session = new Session();
  var taches = jsonDecode(await session.authentification());
  // 把列表更新逻辑放到setState中,触发UI重绘
  setState(() {
    for(int i = 0; i < taches['result']["inRangeTasks"].length ; i++){
      var tacheStr = taches['result']["inRangeTasks"][i]['name'];
      listeTaches.add(tacheStr.toString());
    }
  });
  print(listeTaches);
}
优化建议
  • 可新增加载状态变量,在接口请求过程中展示加载占位符,避免用户在接口返回前仅看到部分静态数据的体验问题。
  • 列表项的key建议使用和业务数据绑定的唯一值(比如任务ID)替代UniqueKey,避免重绘时出现不必要的组件销毁重建,提升拖拽排序的性能和稳定性。

内容的提问来源于stack exchange,提问作者JS1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:09:02