A differenza di una variabile che contiene un solo valore, una lista è un insieme di valori di uno stesso tipo.
Le liste in Dart sono dinamici, quindi non ne si deve obbligatoriamente definire una grandezza limite alla definizione e possono essere rimpicciolite o ingrandite in qualunque momento nel codice.
Esempi di liste:
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5]; List<String> prova = [1, 2, 3, 4, 5]; List<double> prova = [1, 2, 3, 4, 5]; List<bool> prova = [1, 2, 3, 4, 5];
var prova = [1, 2, "mario", false, true]; List<Object> prova = [1, 2, "luigi", false, true];}Le Liste null e i loro contenuti null
Ci sono due differenze da dover individuare per gestire le liste con null:
- La Lista stessa, può essere
null. - Un elemento della lista può essere
null.
Esempio:
// La lista può contenere un elemento nullList<Object?> prova = [1, 2, "luigi", false, true, null];
// La lista può essere null:List<Object>? prova = [1, 2, "luigi", false, true];List<Object>? prova;
// La lista può essere null e può anche contenere elementi che possono essere null:List<Object?>? prova = [1, 2, "luigi", false, true, null];List<Object?>? prova;Stampare l’elemento di una lista
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5];
print(prova[1]);}L’output è:
2Stampare una lista
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5];
print(prova);}L’output è:
[1, 2, 3, 4, 5]Aggiungere elementi ad una Lista
Con .add()
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5];
prova.add(7)
print(prova);}L’output è:
[1, 2, 3, 4, 5, 7]Con .addAll()
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5]; List<int> pippo = [11, 12, 13];
prova.addAll(pippo);
print(prova);}L’output è:
[1, 2, 3, 4, 5, 11, 12, 13]Con lo spread operator ...
void main(List<String> arguments) { List<int> pippo = [11, 12, 13]; List<int> prova = [1, 2, 3, 4, 5, ...pippo];
print(prova);}L’output è:
[1, 2, 3, 4, 5, 11, 12, 13]Aggiungere elementi con la concatenazione (Cascade operator)
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5]..add(6)..add(7)..add(8)..add(9);
print(prova);}Si può fare anche su più righe:
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5] ..add(6) ..add(7) ..add(8) ..add(9);
print(prova);}Rimuovere elementi ad una lista
Rimuovere per valore
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5];
prova.remove(2);
print(prova);}[1, 3, 4, 5]Rimuovere per indice
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5];
prova.removeAt(2);
print(prova);}[1, 2, 4, 5]Rimuovere tutti gli elementi di una lista
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5];
prova.clear();
print(prova);}[]Come iterare una lista con forEach()
La funzione .forEach() è un ciclo for che itera per ogni elemento all’interno di un qualcosa di iterabile, come la lista.
Nell’esempio riportato sotto, viene definita una variabile chiamata “item”, che all’interno della funzione, seguita dalla freccia con l’uguale significa: Per ogni elemento che si chiama “item”, stampa la lista “prova”.
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5];
prova.forEach((item)=>{ print(prova); });}12345Altre funzioni per le liste
.indexOf()
Restituisce l’indice corrispondente all’elemento della lista passata per argomento (se esiste).
void main(List<String> arguments) { List<int> prova = [1, 2, 3, 4, 5];
print(prova.indexOf(4));}3Collection if e Collection for
Collection if
Permette di inserire un elemento ad una lista sulla base di una condizione.
void main(List<String> arguments) { bool maschio = false;
List<String> nomi = [ "Federico", "Carlo", if(maschio) "Valerio" else "Anastasia", "Claudio" ];
print(nomi);}[Federico, Carlo, Anastasia, Claudio]Collection for
Permette di inserire uno o più elementi ad una lista attraverso l’uso di un ciclo for.
void main(List<String> arguments) { List<int> numeri = [1, 2, 3, 4, 5, 6, 7, 8, 9];
List<String> nomi = [ "Numero 0", for(int i in numeri) "Numero $i", "Numero 10" ];
print(nomi);}[Numero 0, Numero 1, Numero 2, Numero 3, Numero 4, Numero 5, Numero 6, Numero 7, Numero 8, Numero 9, Numero 10]