📋 Listas: varios datos nunha orde
Unha List garda elementos ordenados e admite repetidos. Os índices empezan en 0: o primeiro elemento é [0], o segundo [1]…
List<String> significa «lista de textos». O tipo entre <> indica que elementos admite: isto é un uso de xenéricos.
🔗 Ver o código en DartPad — https://dartpad.dev/?id=f083a1a908d3227918950401a8d384b9
Non accedas a un índice que non exista. Nunha lista de tres elementos os índices válidos son 0, 1 e 2.
| Operación | Para que serve |
|---|---|
add(valor) | Engadir un elemento |
remove(valor) | Eliminar a primeira aparición dese valor |
removeAt(indice) | Eliminar pola posición |
contains(valor) | Comprobar se está |
length | Saber cantos elementos hai |
isEmpty | Saber se está baleira |
🔔 Operacións que reciben unha función
| Operación | Para que serve |
|---|---|
map(funcion) | Transformar cada elemento e obter unha secuencia cos resultados. |
where(condicion) | Obter unha secuencia cos elementos que cumpren unha condición. |
sort(comparador) | Ordenar a propia lista segundo unha función de comparación. |
Verémolas con exemplos en «Coleccións e funcións», despois de aprender a pasar funcións como argumentos. En sort() o comparador é opcional: para números ou textos podemos usar a orde predeterminada.
🔐 Unha lista final pode cambiar por dentro
final alumnos = ['Xurxo', 'Roi'];
alumnos.add('Iria'); // Válido: cambia o contido da mesma lista.
// alumnos = ['Anxo']; // Non válido: sería asignar outra lista.
print(alumnos);
const profesores = ['Diego', 'Toni'];
// profesores.add('Julia'); // Fallaría: a lista const non se pode modificar.
print(profesores);
🗺️ Mapas: relacionar unha clave cun valor
Un Map garda pares clave–valor. Por exemplo, o nome dun alumno e a súa nota. As claves son únicas; os valores poden repetirse.
Map<String, int> indica claves de texto e valores enteiros.
🔗 Ver o código en DartPad — https://dartpad.dev/?id=13a3e8aa5090fff0091dc50c4362e4b8
Ao consultar unha clave pode non haber resultado. Por iso notas['Iria'] ten tipo int?, aínda que o mapa garde valores int.
🧩 Mapas con valores de distintos tipos
Nos temas de Flutter aparecerá Map<String, dynamic>, especialmente ao recibir datos externos. As claves son textos, pero cada valor pode ter un tipo distinto:
final alumno = <String, dynamic>{
'nome': 'Iria',
'nota': 9,
'matriculado': true,
};
print(alumno['nome']); // String.
print(alumno['nota']); // int.
print(alumno['matriculado']); // bool.
Coñecer este formato axudaranos a ler eses exemplos. Se sabemos que todos os valores son enteiros, seguiremos usando Map<String, int>; e para agrupar campos fixos de distintos tipos tamén veremos os rexistros.
🔘 Conxuntos: sen repetidos
Un Set garda valores únicos. Serve, por exemplo, para manter unha relación de asistentes sen duplicados. Non accedemos aos seus elementos por índice.
🔗 Ver o código en DartPad — https://dartpad.dev/?id=62b8037f6bd9b52bd41fa0dac25c3307
Para crear coleccións baleiras podemos escribir List<String> alumnos = [];, Map<String, int> notas = {}; e Set<String> asistentes = {};. Sen un tipo que indique outra cousa, {} crea un mapa.
📚 Consulta: coleccións en Dart — https://dart.dev/language/collections.