我试图在HashMap
窗口小部件中显示ListView.builder
值的内容。有没有办法做到这一点?使用List
我可以简单地使用索引,但如果不使用HashMap
,List
如何使用?
地图的键是字符串,值是带有要显示的数据的地图。
答案 0 :(得分:7)
只需从键中创建一个列表,然后使用索引获取值以获取地图键并使用它来获取地图值
var keys = myMap.keys.toList();
var val = myMap[keys[idx]]
答案 1 :(得分:6)
有可能,你可以做这样的事情
map.forEach((key, value) {
// here you can write your logic using "Value object",
// make new object of your list view item and
// add it to it's builder list using
setState(() {
_builderList.insert(0, itemObject);
});
});
或者你可以尝试
final list = map.values.toList(growable: {true/false});
// play with your list
答案 2 :(得分:1)
有点晚了,但是您也可以尝试一下。 地图值= snapshot.data;
return new ListView.builder(
itemCount: values.length,
itemBuilder: (BuildContext context, int index) {
String key = values.keys.elementAt(index);
return new Column(
children: <Widget>[
new ListTile(
title: new Text("$key"),
subtitle: new Text("${values[key]}"),
),
new Divider(
height: 2.0,
),
],
);
},
);
有关更详细的示例,请查看此内容 https://kodestat.gitbook.io/flutter/39-flutter-listviewbuilder-using-dart-maps
答案 3 :(得分:0)
只需在列表视图构建器中使用yourlistname [index] ['keyname'],即可为我工作。
答案 4 :(得分:-2)
我也遇到过类似的情况。就我而言,地图的键是标题字符串和 CheckboxListTile 中复选框值的值。
我的朋友帮助了我,是:
myMap.keys
.map(
(key) => CheckboxListTile(
value: myMap[key],
onChanged: (value) {
setState(() {
myMap[key] = value;
});
},
title: Text('$key'),
),
)
.toList();
注意:由于创建Listview需要一个列表,所以我们需要在将myMap映射到widgets之后将其转换为列表。所以现在它变成了一个小部件列表。