ListView, la liste défilante
ListView affiche une liste qui défile. Pour un petit nombre d'éléments connus, on passe directement children.
ListView.builder pour des données
Pour une liste issue d'une collection (les campagnes), ListView.builder construit les éléments à la demande (performant, même pour de longues listes).
ListView.builder(
itemCount: campagnes.length,
itemBuilder: (context, i) {
final c = campagnes[i];
return CarteCampagne(c);
},
)
ListTile, une ligne prête
ListTile propose une ligne standard : leading (icône/avatar), title, subtitle, trailing, et onTap.
ListTile( leading: const Icon(Icons.local_gas_station), title: Text(c.zone), subtitle: Text('${c.volumeTotal} L'), trailing: Text('${c.prixLitre} €/L'), onTap: () { /* détail */ }, )
GridView
GridView.builder affiche les éléments en grille (plusieurs colonnes), utile pour des vignettes.
Affiche la liste des campagnes avec ListView.builder et une Card/ListTile par campagne (zone, volume, prix, tap → détail). Pour l'instant les données peuvent être en dur ; on les branchera sur l'API au chapitre 13.
ListView.builderpour les listes de données (à la demande).ListTile= ligne prête (leading/title/subtitle/trailing/onTap).GridView.builderpour une grille.