Flutter 从dart中的列表中删除重复项
嘿,我正在尝试在下拉列表中显示我数据库中的所有选项,我让它们显示出来,但我只希望每个结果中出现一个,我不知道如何获得重复项这是我单击下拉列表时的样子Flutter 从dart中的列表中删除重复项,flutter,dart,filter,dropdown,Flutter,Dart,Filter,Dropdown,嘿,我正在尝试在下拉列表中显示我数据库中的所有选项,我让它们显示出来,但我只希望每个结果中出现一个,我不知道如何获得重复项这是我单击下拉列表时的样子 new DropdownButton<String>( hint: Text("Series"), // value: null, items: _fieldList.map((val
new DropdownButton<String>(
hint: Text("Series"),
// value: null,
items: _fieldList.map((value){
return DropdownMenuItem<String>(
value: value.series,
child: Container(
width: 100,
child: new Text(value.series),
下面是获取结果的代码
void _getFieldsData() {
getUserDetails().then((data) {
final items = jsonDecode(data).cast<Map<String, dynamic>>();
var fieldListData = items.map<User>((json) {
return User.fromJson(json);
}).toSet().toList();
///set list for class
_selectedField = fieldListData[0].series;
_selectedField = fieldListData[0].classs;
setState(() {
for (Map user in items) {
_userDetails.add(User.fromJson(user));
print(_userDetails.length);
//if (_userDetails.classs != userDetail.classs.contains(_selectedText))
}
});
// update widget
setState(() {
_fieldList = fieldListData.toSet().toList();
//print(resultseries);
// print(uniqueCount);
print(_fieldList);
});
});
void\u getFieldsData(){
getUserDetails()。然后((数据){
final items=jsonDecode(data.cast();
var fieldListData=items.map((json){
返回User.fromJson(json);
}).toSet().toList();
///为班级设置列表
_selectedField=fieldListData[0]。系列;
_selectedField=fieldListData[0]。类;
设置状态(){
用于(映射项目中的用户){
_添加(User.fromJson(User));
打印(_userDetails.length);
//如果(_userDetails.classs!=userDetail.classs.contains(_selectedText))
}
});
//更新小部件
设置状态(){
_fieldList=fieldListData.toSet().toList();
//打印(结果系列);
//打印(唯一计数);
打印(_字段列表);
});
});
这是下拉列表
new DropdownButton<String>(
hint: Text("Series"),
// value: null,
items: _fieldList.map((value){
return DropdownMenuItem<String>(
value: value.series,
child: Container(
width: 100,
child: new Text(value.series),
新建下拉按钮(
提示:文本(“系列”),
//值:null,
项目:_fieldList.map((值){
返回下拉菜单项(
value:value.series,
子:容器(
宽度:100,
子项:新文本(value.series),
不清楚您的用户类到底是什么样子的,但我假设您有多个字段,但它们的值并不都相同,例如,每个字段都有一个唯一的id,这就是为什么在您的情况下,下面这一行不起作用的原因:
setState(() {
_fieldList = fieldListData.toSet().toList();
});
我建议使用,并将上面的行更改为仅检查.series字段,如下所示:
List initialResultsList = [];
setState(() {
// use fold (similar to .reduce()) to iterate through fieldListData and return the updated filtered 'results'
// list with each iteration:
_fieldList = fieldListData.fold(initialResultsList, (results, currentItem) {
// check to see if currentItem.series already exists in any item of filtered results:
if (!results.any((item) => item.series == currentItem.series)) {
// if not, add it to results:
results.add(currentItem);
}
// return results for next iteration
return results;
});
}
嘿,谢谢你的回答,我如何只检查。系列由于我有点困惑,就像我上面做的一样,我更新了代码并添加了注释,以更清晰。