Flutter发送GET请求时如何更新容器数据而非追加原有旧数据
问题根因
你每次触发请求拿到返回数据后,直接调用add方法向全局的_userDetails列表追加内容,没有清空上一次请求留存的旧数据,因此会出现新老数据叠加展示的问题。
修复方案
修改请求方法内的setState逻辑,写入新数据前先清空原有列表,或者直接用新数据覆盖原有列表即可,两种写法任选其一即可:
写法1:先清空再追加新数据
修改getEventsTTNDetails方法内的setState部分:
setState(() { // 清空旧数据 _userDetails.clear(); for (Map<String, dynamic> user in responseJson) { _userDetails.add(eventHistory.fromJson(user)); } });
写法2:直接用新数据覆盖原有列表(更简洁)
setState(() { _userDetails = responseJson.map<eventHistory>((jsonItem) => eventHistory.fromJson(jsonItem)).toList(); });
可选优化建议
Dart官方编码规范建议类名使用大驼峰命名,你可以将eventHistory类名修改为EventHistory,更符合通用开发规范。
内容的提问来源于stack exchange,提问作者Андрій Гавриляк
相关产品推荐
相关产品推荐

