web-dev-qa-db-fra.com

Flutter listview avec Map au lieu de List

J'essaie d'afficher le contenu de mes valeurs HashMap dans un ListView.builder widget. Y a-t-il un moyen de faire cela? Avec un List je pourrais simplement utiliser l'index, mais comment cela fonctionnerait-il avec un HashMap sans en faire un List? Les clés de la carte sont des chaînes et les valeurs sont des cartes avec les données à afficher.

12
Bram Vanbilsen

Faites simplement une liste à partir des clés, puis obtenez la valeur en utilisant l'index pour obtenir la clé de la carte et utilisez-la pour obtenir la valeur de la carte

var keys = myMap.keys.toList();
var val = myMap[keys[idx]]
6
Günter Zöchbauer

c'est possible, vous pouvez faire quelque chose comme ça

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

   });

ou vous pouvez essayer

 final list = map.values.toList(growable: {true/false});
// play with your list
3
Muhammad Adil

C'est un peu tard mais vous pouvez aussi essayer ça. Valeurs de la carte = 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,
        ),
      ],
    );
  },
);

pour un exemple plus détaillé, vérifiez ceci https://kodestat.gitbook.io/flutter/39-flutter-listviewbuilder-using-Dart-maps

1
kenn