A where a Dart egyik beépített metódusa, és arra való, hogy megszűrje azt a listát, amin meghívtuk. A map()-hez hasonlóan nem változtatja meg az eredeti listát, hanem egy újjal tér vissza.
A VSCode mutatja a pontos infót, hogy mit kapunk:
Type: Iterable<Map<String, Object>> Function(bool Function(Map<String, Object>))
dart:core
Creates a new lazy [Iterable] with all elements that satisfy the predicate [test].
Ebből is látszik, hogy valójában nem egy listát, hanem egy Iterable típusú adatot kapunk.
Használat
A where metódusnak át kell adni egy függvényt, mint paramétert, ami a lista minden elemén végig fog szaladni.
final szamok = <int>[1, 2, 3, 4, 5];
final otnelKisebbek = szamok.where(() {});
A where-nek átadott függvény bemeneti paramétere a soron következő elem. Ennek neve bármi lehet, nincs megkötés. Például x:
final otnelKisebbek = szamok.where((x) {});
A map()-el ellentétben a függvény törzsében nem térünk vissza valamilyen átalakított értékkel, hanem vagy true vagy false értékkel. True értékkel tér vissza abban az esetben, ha az adott elem benne van a listában. False pedig annak a jele, hogy nincs.
Ahhoz, hogy tudjuk melyiket adja vissza a where, nyilván kell valamiféle vizsgálat.
final otnelKisebbek = szamok.where((x) {
return x < 5;
});
Nyíl függvénnyel:
final otnelKisebbek = szamok.where((x) => x < 5);