Aplicacions amb Flutter, Dart i Flame

Tutorial Flutter Flame Projectes   Recursos CITCEA
Exemples Dart Dades pràctiques     Inici

Llistes

La manera més organitzada de crear una llista és posant-ho explícitament i indicant el tipus de dades:

...
  List<String> estacions = ["hivern", "primavera", "estiu", "tardor"];
...

També podem fer:

...
  List<String> estacions;
  estacions = ["hivern", "primavera", "estiu", "tardor"];
...

I podem definir la llista com a var, en quin cas podrà tenir elements de tipus diferents.

...
  var llista = ["Ferro", 3, 34.5];
...

però caldrà vigilar a l'hora de fer-ne servir els elements.

Podem accedir a qualsevol element indicant-ne la posició, tenint en compte que el primer element té la posició 0.

...
  String actual = estacions[1];
...

I els podem assignar un nou valor:

...
  estacions[0] = "gelor";
...

És possible imprimir la llista sencera:

...
  List<String> estacions = ["hivern", "primavera", "estiu", "tardor"];
  print(estacions);  // Escriu: ["hivern", "primavera", "estiu", "tardor"]
...

Es pot accedir al primer i al darrer element d'una llista fent servir, respectivament, les ordres first i last. També es pot consultar la seva llargada amb length.

...
  String primer = estacions.first;  // Hivern
  String darrer = estacions.last;  // Tardor
  int llargada = estacions.length;  // 4
...

La llista té quatre elements, que tenen índexs entre 0 i 3.

A les llistes se'ls poden afegir elements fent servir add.

...
  List<String> noms = ["Paula", "Jordi"];
  noms.add("Laura");
  noms.add("Manel");
  print(noms);  // Escriu: [Paula, Jordi, Laura, Manel]
...

Emprant add, els nous elements s'afegeixen al final. Podem afegir en qualsevol posició vàlida amb insert, indicant a quina posició afegim.

...
  List<String> noms = ["Paula", "Eric", "Alba", "Joan"];
  noms.insert(2, "Maria");
  print(noms);  // Escriu: [Paula, Eric, Maria, Alba, Joan]
...

Emprant addAll podem fer servir una llista per afegir elements a una altra llista.

...
  List<String> noms = ["Paula", "Eric"];
  var noms2 = ["Alba", "Joan"];
  noms.addAll(noms2);
  print(noms);  // Escriu: [Paula, Eric, Alba, Joan]
...

O bé:

...
  List<String> noms = ["Paula", "Eric"];
  noms.addAll(["Alba", "Joan"]);
  print(noms);  // Escriu: [Paula, Eric, Alba, Joan]
...

Amb remove podem eliminar un element.

...
  List<String> noms = ["Paula", "Eric", "Alba", "Joan"];
  noms.remove("Alba");
  print(noms);  // Escriu: [Paula, Eric, Joan]
...

Si l'element a eliminar hi és més d'un cop, s'eliminarà només aquell que estigui primer (amb un índex més baix) i la resta es mantindran.

I fent servir removeAt podem eliminar l'element d'una posició concreta.

...
  List<String> noms = ["Paula", "Eric", "Alba", "Joan"];
  noms.removeAt(1);
  print(noms);  // Escriu: [Paula, Alba, Joan]
...

Existeix la possibilitat d'esborrar tots els elements, emprant clear.

...
  List<String> noms = ["Paula", "Eric", "Alba", "Joan"];
  noms.clear();
  print(noms);  // Escriu: []
...

Podem fer servir un bucle for amb índex per recórrer tots els elements de la llista.

...
  List<int> valors = [0, 1, 3, 2];
  for(int i = 0; i < valors.length; i++){
    print(valors[i]);
  }
...

També podem emprar un for específic per a agrupacions:

...
  List<int> valors = [0, 1, 3, 2];
  for(int elem in valors){
    print(elem);
  }
...

Alternativament, podem emprar un forEach:

...
  List<int> valors = [0, 1, 3, 2];
  valors.forEach(print);
...

O d'una manera una mica més desenvolupada i flexible:

...
  List<int> valors = [0, 1, 3, 2];
  valors.forEach((elem){
    print("Element: $elem");
  });
...

Llistes de llistes (matrius)

Podem tenir llistes de llistes, que permeten tenir la informació en una estructura matricial. Per fer una estructura bidimensional, tindríem:

...
  List<List<int>> estatCaselles = [[0, 1, 2], [2, 0, 1], [1, 2, 0]];
...

Llavors podem llegir cada valor emmagatzemat fent servir els seus dos índexs:

...
      estatAct = estats[i][j];
...

 

 

 

 

 

 

 

 

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.