You need to enable JavaScript to run this app. Flutter dropdown调用API获取数据出现重复值该如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Flutter dropdown调用API获取数据出现重复值该如何解决

Flutter Dropdown组件Pincode重复值问题修复方案

一、API调用阶段避免重复(优先选择)

  • 如果你可修改提供Pincode数据的后端接口,直接在接口返回逻辑中对Pincode字段做去重处理,从数据源层面消除重复值,不需要前端做额外适配,是成本最低的解决方案。
  • 如果使用的是第三方不可改造的接口,再通过前端侧做数据去重兜底。

二、前端侧数据去重处理

拿到接口返回的原始数据后,先做去重再赋值给Dropdown的数据源即可,分两种常见场景:

场景1:接口返回的是Pincode字符串列表

直接通过Set去重:

// 调用接口获取原始数据
List<String> rawPincodeList = await fetchPincodeApi();
// 去重得到无重复的列表
List<String> uniquePincodeList = rawPincodeList.toSet().toList();

场景2:接口返回的是包含Pincode字段的对象列表

按Pincode字段做去重,保留第一个出现的重复项:

// 示例对象结构,可替换为你自己的业务对象
class PincodeInfo {
  final String pincode;
  final String area;
  PincodeInfo({required this.pincode, required this.area});
}

// 调用接口获取原始数据
List<PincodeInfo> rawList = await fetchPincodeInfoApi();
Set<String> existedPincode = {};
// 按pincode字段去重
List<PincodeInfo> uniqueList = rawList.where((item) {
  if (existedPincode.contains(item.pincode)) return false;
  existedPincode.add(item.pincode);
  return true;
}).toList();

注意事项

  • 去重逻辑必须在给Dropdown的items属性赋值前执行,保证传入Dropdown的数据源无重复值。
  • Dropdown绑定的value值必须存在于去重后的列表中,否则会触发There should be exactly one item with [DropdownButton]'s value异常。

Pincode重复值示例


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 22:15:05