Ce face Iterable.take
take(n) returnează un iterable leneș cu cel mult primele n elemente. skip(n) returnează elementele care rămân după primele n. Dacă colecția are mai puține elemente, nu apare nicio eroare: primești câte sunt.
Împreună, skip și take fac paginarea: skip(pagina * marime).take(marime). Pe liste există și sublist, care returnează direct o listă, dar aruncă eroare dacă pozițiile depășesc lungimea.
Parametri
| Parametru | Descriere |
|---|---|
count |
Numărul de elemente păstrate (take) sau sărite (skip). Nu poate fi negativ. |
Ce returnează
Un Iterable leneș.
Exemple
Exemplul 1: Primii trei din clasament
void main() {
final scoruri = [980, 870, 860, 720, 650, 600];
print('Podium: ${scoruri.take(3)}');
print('Restul: ${scoruri.skip(3)}');
print('take(10) pe 6 elemente: ${scoruri.take(10).length}');
}
Rezultat
Podium: (980, 870, 860)
Restul: (720, 650, 600)
take(10) pe 6 elemente: 6
Exemplul 2: Paginare cu skip și take
void main() {
final produse = List.generate(7, (i) => 'produs ${i + 1}');
const marime = 3;
for (var pagina = 0; pagina * marime < produse.length; pagina++) {
final bucata = produse.skip(pagina * marime).take(marime);
print('Pagina ${pagina + 1}: ${bucata.join(', ')}');
}
}
Rezultat
Pagina 1: produs 1, produs 2, produs 3
Pagina 2: produs 4, produs 5, produs 6
Pagina 3: produs 7
Greșeli frecvente
- Dai o valoare negativă:
take(-1)aruncăRangeError. Verifică valoarea înainte, mai ales când vine din calcule.
Comenzi înrudite
Iterable.takeWhile: takeWhile păstrează elementele de la început cât timp trec testul; skipWhile le sare cât timp trec testul.List.sublist: sublist copiază o porțiune a listei într-o listă nouă; getRange dă aceeași porțiune ca iterable leneș.Stream.take: take păstrează doar primele n valori și apoi închide stream-ul; skip sare peste primele n valori.