Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 从dart中的列表中删除重复项_Flutter_Dart_Filter_Dropdown - Fatal编程技术网

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;
  });
}

嘿,谢谢你的回答,我如何只检查。系列由于我有点困惑,就像我上面做的一样,我更新了代码并添加了注释,以更清晰。