Iterable.every în Dart

every verifică dacă toate elementele trec testul; any verifică dacă măcar unul îl trece.

Sintaxă
bool every(bool test(E element))
bool any(bool test(E element))

Ce face Iterable.every

every returnează true dacă funcția test este adevărată pentru fiecare element. Se oprește la primul element care nu trece. Pe o colecție goală returnează true.

any returnează true dacă există cel puțin un element care trece testul și se oprește la primul găsit. Pe o colecție goală returnează false.

Parametri

Parametru Descriere
test Funcția care verifică un element.

Ce returnează

true sau false.

Exemple

Exemplul 1: Toți promovați? Există vreo notă de 10?

void main() {
  final note = [7, 9, 10, 6];
  print('toți promovați: ${note.every((n) => n >= 5)}');
  print('are un 10: ${note.any((n) => n == 10)}');
  print('are un 4: ${note.any((n) => n == 4)}');

  final goala = <int>[];
  print('listă goală -> every: ${goala.every((n) => n > 100)}, any: ${goala.any((n) => n > 100)}');
}

Rezultat

toți promovați: true
are un 10: true
are un 4: false
listă goală -> every: true, any: false

Exemplul 2: Validarea unui formular

void main() {
  final campuri = {'nume': 'Ana Pop', 'oraș': 'Iași', 'telefon': ''};
  final complet = campuri.values.every((v) => v.trim().isNotEmpty);
  final goale = campuri.entries.where((e) => e.value.isEmpty).map((e) => e.key);
  print(complet ? 'Formular complet' : 'Lipsesc: ${goale.join(', ')}');
}

Rezultat

Lipsesc: telefon

Greșeli frecvente

  • Te miri că every pe o listă goală dă true. Așa este definit (nu există niciun element care să nu treacă); verifică separat isEmpty dacă lista goală trebuie tratată altfel.

Comenzi înrudite

  • Iterable.contains: Verifică dacă un element egal (==) cu valoarea dată există în colecție.
  • Iterable.where: Păstrează doar elementele care trec un test; whereType păstrează doar elementele de un anumit tip.
  • Stream.any: any verifică dacă vreo valoare trece testul, every dacă toate îl trec, contains dacă o anumită valoare apare.