Lección 9 · 9 de 20
Listas · Dart
Guarde varios valores en orden con las listas de Dart: List<String>, posiciones desde 0, first y last, recorrerlas con for-in, contains e indexOf.

Una lista guarda varios valores en orden, entre corchetes: ['Mercury', 'Venus', 'Earth', 'Mars']. El tipo `List<String>` dice que es una lista de cadenas; lo que va entre < > es el tipo de sus elementos. print(planets) la escribe entera y length dice cuántos elementos tiene.
Cada elemento tiene una posición (índice), que empieza en 0: planets[0] es Mercury y el último está en length - 1. Como pedir el primero y el último es tan frecuente, las listas tienen `first` y `last`.
Con planets[3] = 'Mars (the red one)' se cambia el elemento de esa posición. Y el bucle `for-in` recorre la lista elemento a elemento: for (var planet in planets) da cada planeta en planet, sin preocuparse de los índices.
Con var, Dart deduce el tipo: [0, 0, 1, 2] es una List<int>. El for clásico con índice también sirve para recorrerla, aquí para sumar las lunas.
Las listas responden preguntas: `contains()` dice si un valor está, `indexOf()` da su posición (o -1 si no está, como con Pluto) e `isEmpty` dice si la lista está vacía.
Código · main.dart
void main() { // A list keeps values in order, between [ ]. List<String> planets = ['Mercury', 'Venus', 'Earth', 'Mars']; print(planets); print('The list has ${planets.length} planets'); // Positions start at 0, so the last one is length - 1. print('First: ${planets[0]}, last: ${planets[planets.length - 1]}'); print('Also: ${planets.first} and ${planets.last}'); // A position can be given a new value. planets[3] = 'Mars (the red one)'; // for-in goes through every element. for (var planet in planets) { print('- $planet'); } // var works out the type: here, List<int>. var moons = [0, 0, 1, 2]; int total = 0; for (int i = 0; i < moons.length; i++) { total += moons[i]; } print('Moons in total: $total'); // contains, indexOf and isEmpty answer questions. print('Has Venus? ${planets.contains('Venus')}'); print('Earth is at position ${planets.indexOf('Earth')}'); print('Pluto is at ${planets.indexOf('Pluto')}. Empty? ${planets.isEmpty}');}Salida · dart run main.dart
[Mercury, Venus, Earth, Mars] The list has 4 planets First: Mercury, last: Mars Also: Mercury and Mars - Mercury - Venus - Earth - Mars (the red one) Moons in total: 3 Has Venus? true Earth is at position 2 Pluto is at -1. Empty? false
Para recordar
- Una lista va entre
[ ]; su tipo,List<T>. - El primer elemento está en
[0]; el último, en[length - 1]. firstylastdan los extremos.for (var x in lista)recorre los elementos.indexOfda-1si el valor no está.
Ejercicio
Cree una lista con las temperaturas de una semana, recórrala con for-in para calcular la media y escriba también la del primer y el último día.