Iterable.first în Dart

first și last dau primul și ultimul element; single dă singurul element și verifică faptul că este unul singur.

Sintaxă
E get first
E get last
E get single

Ce face Iterable.first

first returnează primul element, last ultimul. Pe o colecție goală ambele aruncă StateError (Bad state: No element). Pe o listă, first este același lucru cu lista[0].

single returnează elementul doar dacă există exact unul. Dacă nu există niciunul sau sunt mai multe, aruncă StateError. Este util când știi că un filtru trebuie să găsească un singur rezultat. Pentru variantele fără excepții vezi firstOrNull, lastOrNull, singleOrNull.

Ce returnează

Elementul cerut.

Exemple

Exemplul 1: Primul și ultimul din clasament

void main() {
  final clasament = ['Ana', 'Mihai', 'Ioana', 'Vlad'];
  print('Locul 1: ${clasament.first}');
  print('Ultimul: ${clasament.last}');

  final admis = clasament.where((n) => n.startsWith('I'));
  print('Singurul cu I: ${admis.single}');
}

Rezultat

Locul 1: Ana
Ultimul: Vlad
Singurul cu I: Ioana

Exemplul 2: Erorile pe colecții goale sau prea mari

void main() {
  final goala = <String>[];
  try {
    print(goala.first);
  } on StateError catch (e) {
    print('first: $e');
  }
  try {
    print([1, 2].single);
  } on StateError catch (e) {
    print('single: $e');
  }
}

Rezultat

first: Bad state: No element
single: Bad state: Too many elements

Greșeli frecvente

  • Citești first fără să verifici că lista are elemente. Verifică isNotEmpty sau folosește firstOrNull.

Comenzi înrudite

  • Iterable.firstWhere: Găsește primul, ultimul sau singurul element care trece un test, cu o valoare de rezervă opțională (orElse).
  • Iterable.firstOrNull: Primul, ultimul sau singurul element, ori null în loc de excepție când nu există.
  • Iterable.elementAt: Returnează elementul de la o poziție; elementAtOrNull returnează null dacă poziția nu există.
  • List.operator[]: lista[i] citește elementul de pe poziția i; lista[i] = x îl înlocuiește.