Flutter:Map <String,T>的ListView.Builder类型

时间:2019-06-03 09:12:52

标签: android flutter dart

我有“体育项目”下拉列表,并且每当用户从“体育馆”中选择体育项目时,所选体育项目就会存储在Map中,并将在ListView中进行更新,以便用户可以看到所选体育项目。我可以在下拉菜单中进行选择,并获得正确的所选运动项目的长度,但可以在地图上添加运动项目,但是我必须在ListView中显示,当我尝试获得运动项目时,它显示为空值索引名称。如何在列表视图项中从地图显示选定的运动

Map<String,Sports> _selectedSports = new Map<String,Sports>();

ListView.builder(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: _selectedSports!=null?_selectedSports.length:0, itemBuilder: 
(BuildContext ctxt, int index) {return new Text('Sports 
${_selectedSports[index].names}');})// showing null here



 ${_selectedSports['1'].names}// but it is returning value by key

我已成功从下拉菜单onChanged中添加地图项

void changedDropDownSportsItems(Sports selectedSports) {
     print("Selected Sport ${selectedSports.names}");
     _selectedSports[selectedSports.id.toString()] = selectedSports;
    setState(() {
      _currentSportsBar  = selectedSports;
      _selectedSports;
      print("Selected Sports size ${_selectedSports.length}");

    });
  }

当我尝试通过键获取值时,它返回名称,但从索引中返回null。

2 个答案:

答案 0 :(得分:0)

更新 试试这个

 Column(
            children: _selectedSports.values
                .toList()
                .map((value) => Text('Sports ${value.names}'))
                .toList())

答案 1 :(得分:0)

无法通过索引访问地图的元素。所以我已经尝试过类似的事情。

 Text('${_selectedSports.values.toList()[index].names}',

@Gunter说here

 var keys = myMap.keys.toList();
 var val = myMap[keys[idx]]

我得到的是值列表,而不是键。