diegoRodicio

View Categories

📚 Coleccións básicas

Tempo de lectura estimado: 1 minutos

📋 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ónPara 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á
lengthSaber cantos elementos hai
isEmptySaber se está baleira

🔔 Operacións que reciben unha función

OperaciónPara 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.