使用Map而不是List来查看列表视图

时间:2017-10-20 20:05:54

标签: dart flutter

我试图在HashMap窗口小部件中显示ListView.builder值的内容。有没有办法做到这一点?使用List我可以简单地使用索引,但如果不使用HashMapList如何使用? 地图的键是字符串,值是带有要显示的数据的地图。

5 个答案:

答案 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之后将其转换为列表。所以现在它变成了一个小部件列表。