我有“体育项目”下拉列表,并且每当用户从“体育馆”中选择体育项目时,所选体育项目就会存储在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。
答案 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]]
我得到的是值列表,而不是键。