Ce face Iterable.nonNulls
nonNulls (Dart 3.0) există pe iterabile cu elemente nullabile, Iterable<T?>. Returnează un iterable leneș fără valorile null, iar tipul lui este Iterable<T>, deci poți folosi elementele fără !.
Un where((x) => x != null) ar elimina și el valorile null, dar tipul ar rămâne Iterable<T?>.
Ce returnează
Un Iterable<T> leneș.
Exemple
Exemplul 1: Note lipsă dintr-un catalog
void main() {
final note = <int?>[9, null, 7, 10, null];
final existente = note.nonNulls;
print(existente);
final medie = existente.reduce((a, b) => a + b) / existente.length;
print('media: ${medie.toStringAsFixed(2)} din ${existente.length} note');
}
Rezultat
(9, 7, 10)
media: 8.67 din 3 note
Exemplul 2: Conversii care pot eșua
void main() {
final intrari = ['12', 'abc', '7', '', '30'];
final numere = intrari.map(int.tryParse).nonNulls.toList();
print(numere);
}
Rezultat
[12, 7, 30]
Greșeli frecvente
- Cauți
nonNullspe o listă de tip ne-nullabil (List<int>): nu există acolo, pentru că nu are ce elimina.
Comenzi înrudite
Iterable.where: Păstrează doar elementele care trec un test; whereType păstrează doar elementele de un anumit tip.Iterable.firstOrNull: Primul, ultimul sau singurul element, ori null în loc de excepție când nu există.Iterable.map: Transformă fiecare element cu o funcție și returnează un iterable nou, leneș, cu rezultatele.