Flutter: ListView
Z MiS
(Rozdíly mezi verzemi)
(→Příklad zobrazení seznamu: Přidána ikonka pro mazání položky.) |
(→ListTile: položka seznamu: Přidána možnost aktivní ikony (IconButton).) |
||
| Řádka 60: | Řádka 60: | ||
* <code>title</code> – hlavní text (nadpis položky) | * <code>title</code> – hlavní text (nadpis položky) | ||
* <code>subtitle</code> – doplňující popis položky | * <code>subtitle</code> – doplňující popis položky | ||
| − | * <code>leading</code> – ikona vlevo | + | * <code>leading</code> – ikona vlevo (může být <code>Icon</code> nebo <code>IconButton</code> |
| − | * <code>trailing</code> – ikona vpravo | + | * <code>trailing</code> – ikona vpravo (opět může být aktivní) |
| − | * <code>onTap</code> – reakce na kliknutí | + | * <code>onTap</code> – reakce na kliknutí na položku |
; Příklad použití: | ; Příklad použití: | ||
| Řádka 70: | Řádka 70: | ||
title: Text('Karel Dvořák'), | title: Text('Karel Dvořák'), | ||
subtitle: Text('místnost: 33'), | subtitle: Text('místnost: 33'), | ||
| − | trailing: Icon(Icons. | + | trailing: IconButton( |
| + | icon: const Icon(Icons.delete, color: Colors.red), | ||
| + | onPressed: () => _reakceNaIkonu(index), | ||
| + | tooltip: 'Nápověda pro ikonku' | ||
| + | ), | ||
onTap: () { | onTap: () { | ||
_reakceNaKlik; | _reakceNaKlik; | ||
}, | }, | ||
) | ) | ||
| − | |||
== Související stránky == | == Související stránky == | ||
* [[Flutter: Základní widgety]] | * [[Flutter: Základní widgety]] | ||
* [[Flutter: Kostra aplikace]] | * [[Flutter: Kostra aplikace]] | ||
Aktuální verze z 3. 6. 2026, 05:07
Obsah |
ListView
-
ListViewslouží pro zobrazení dynamického seznamu položek, kterým lze skrolovat. - Lze ho využít například pro zobrazení položek ze seznamu či pro položky, které přidáváme postupně.
Příklad zobrazení seznamu
- Pro zobrazení seznamu
seznammůžeme použít ListView:
List<Element> seznam = ...;
Expanded(
child: ListView.builder(
itemCount: _seznam.length,
itemBuilder: (context, index) {
return ListTile(
title: Text('${_seznam[index].nazev}'),
subtitle: Text('${_seznam[index].popis}'),
trailing: IconButton(
icon: const Icon(Icons.delete, color: Colors.red),
onPressed: () => _methodToDeleteItem(index),
tooltip: 'Smazat položku',
),
);
},
),
),
Vytvoření ListView
ListView.builder()
- Používá se pro delší nebo dynamické seznamy (nejčastější varianta).
- Vytváří položky až když jsou potřeba (lepší výkon)
ListView.builder(
itemCount: 10,
itemBuilder: (context, index) {
return ListTile(
title: Text('Položka $index'),
);
},
)
ListView(children: [])
- Vhodné pro krátké statické seznamy — nelze přidávat položky.
ListView(
children: [
ListTile(title: Text('Položka 1')),
ListTile(title: Text('Položka 2')),
ListTile(title: Text('Položka 3')),
],
)
ListTile: položka seznamu
- Jednu položku dynamického seznamu reprezentuje widget
ListTile
- Vlastnosti
ListTile
-
title– hlavní text (nadpis položky) -
subtitle– doplňující popis položky -
leading– ikona vlevo (může býtIconneboIconButton -
trailing– ikona vpravo (opět může být aktivní) -
onTap– reakce na kliknutí na položku
- Příklad použití
ListTile(
leading: Icon(Icons.person),
title: Text('Karel Dvořák'),
subtitle: Text('místnost: 33'),
trailing: IconButton(
icon: const Icon(Icons.delete, color: Colors.red),
onPressed: () => _reakceNaIkonu(index),
tooltip: 'Nápověda pro ikonku'
),
onTap: () {
_reakceNaKlik;
},
)