Skip to content
Kezdőlap » toList() és az Iterable

toList() és az Iterable

  • Dart

A toList() függvény vagy metódus egy „Iterable” adatot képes List típusú adattá konvertálni. Okés, de mi az az Iterable?

Iterable

Az Iterable egy olyan gyűjtemény (kollekció), aminek az elemei szépen sorrendben hozzáférhetők. A kollekciókról egy másik posztban már volt szó. Alapvetően három kollekció típus van: List, Set és Map.

Az Iterable a Dart dokumentáció alapján egy absztrakt osztály, amit nem lehet példányosítani. Sok esetben a Dart ezt adja eredményül, valamilyen művelet után. Az alapvető különbség egy sima List és az Iterable között az, hogy nem tudjuk garantálni, hogy az elemek index alapján történő kiolvasása egy Iterable gyűjteményből elég hatékony.

Iterable létrehozás

Iterable<int> iterable = [1, 2, 3];

Annak ellenére, hogy a létrehozáshoz használjuk a [] -et, az elemek kiolvasásához már nem lehet. Helyette az elementAt() metódust tudjuk használni, ami az adott pozíción levő elemet olvassa ki:

int value = iterable.elementAt(1); // 2

Az eredmény azért lett 2, mert az Iterable kollekción belüli elemek indexelése is 0-tól indul.

toList()

Amikor a VSCode azt a hibát jelzi, hogy

The argument type 'Iterable<Row>' can't be assigned to the parameter type 'List<Widget>'.

Akkor ez azt jelenti, hogy bár feldolgozható lista szerű a műveletként kapott adat, de mégsem List és márpedig neki listára van szüksége a helyes működéshez.

Ekkor szerényen megereszthetünk egy flegma mosolyt, és azt mondjuk a VSCode-nak, hogy jól van öcsém, akkor itt a toList() függvény, amivel az Iterable, egy listává alakítható:

List<int> lista = iterable.toList();

És ezután már elérhetőek a listaelemek a tömb szintaxissal:

print(lista[0]); // 1

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük