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
firstfără să verifici că lista are elemente. VerificăisNotEmptysau foloseștefirstOrNull.
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.