Loupe

Utiliser les listes dans vos applications Flutter

Pour continuer la série d'article sur Flutter, je vais aujourd'hui parler d'un widget essentiel pour un très grand nombre d'applications mobiles : la ListView.

Pour cet article, je vais m'appuyer sur le besoin que j'ai eu lors de la création de l'application d'affichage des heures de lever et coucher du soleil. Pour ceux qui ont loupé les précédents articles les voici :

Le besoin fut donc de pouvoir chercher une adresse pour pouvoir afficher les heures de lever et coucher de soleil de cet endroit. Pour cela, j'ai eu besoin de faire appel à une API et d'afficher les résultat dans une liste pour ensuite pouvoir sélectionner la ville de mon choix.

Récupération des données à afficher

Je ne décrirai pas cette partie là, puisque le mécanisme est le même que dans l'article Faire des requêtes HTTP dans vos applications Flutter. Vous pouvez également utiliser une liste de données créée en dur.

Création de la liste

Le widget ListView permet de définir la liste en ajoutant les différents éléments de la liste à la main comme ceci (d’après la documentation officielle) :

ListView(
  padding: const EdgeInsets.all(8),
  children: <Widget>[
    Container(
      height: 50,
      color: Colors.amber[600],
      child: const Center(child: Text('Entry A')),
    ),
    Container(
      height: 50,
      color: Colors.amber[500],
      child: const Center(child: Text('Entry B')),
    ),
    Container(
      height: 50,
      color: Colors.amber[100],
      child: const Center(child: Text('Entry C')),
    ),
  ],
)
 

Mais très souvent, le besoin est de répéter un élément X fois en fonction du nombre d'éléments dans les données à afficher. Pour cela, il y a le builder qui est là pour nous aider :

ListView.builder(
    itemCount: data.length, // Nombre d'élément dans votre liste de données (ici data)
    itemBuilder: (context, i) {
        // Construction du widget à répéter
    }
);
 

La suite est simple, il suffit de définir le widget permettant d'afficher les données. Cela peut être n'importe quel type de widget. Par exemple, nous pouvons utiliser le widget ListTile :

ListView.builder(
    itemCount: data.length, // Nombre d'élément dans votre liste de données (ici data)
    itemBuilder: (context, i) {
        // Construction du widget à répéter
        return ListTile(
            leading: Icon(Icons.place), 
            title: data[i].city
        );
    }
);
Cela donnera quelque chose comme ceci :
Screenshot_20191004-172940.jpg

Pour donner un effet de cartes comme dans la seconde image, il suffit de de placer le widget ListTile dans un widget Card. Ensuite vous pouvez laisser libre court à votre imagination et créer la tuile de vos rêves :)

Et TADA c'est tout !

Et toujours, pour ceux qui voudraient en lire un peu plus sur Flutter, voici quelques liens :

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus