Coleções em Dart (Maps, List)

A variável, por definição, só nos permite colocar um valor dentro dela, porém há situações em que queremos um tipo de variável mais flexível que contenha mais valores. A estas variáveis mais flexíveis iremos chamar de coleções que é um tipo de estrutura de dados onde podemos

LISTAS

É um conjunto de valores organizados e com uma ordem, por exemplo [7, 1, 2, 3], para cada número há um índice, ou seja, o número 7 equivale ao índice 0, o número 1 ao índice 1 e assim por diante. O índice é como se fosse uma fila, então o primeiro ítem sempre equivalerá ao indice 0 e assim por diante. 

Os índices podem conter número ou nomes.

Em outras linguagens a lista ou list é chamada de array, já em Dart, chama-se list ou listas.

MAPAS

Séra mais flexível do que as listas, é uma espécie de dicionário. Mas como assim um dicionário? Bem, em um dicionário de um lado há o nome e de outro o significado. Mapas são tratados da mesma forma (um par de chave-valor, key-value). ex. {"id":"0", "nome":"diego"} a chave seria o "id" e o valor "0".

COMO CRIAR COLEÇÕES EM DART

Criando Listas

Para criar uma lista iremos criar uma variável + nome e após a lista de dados que queremos que ela contenha:

main (List<String> arguments) {
  var lista = [11, 22, 33, "Oi"];
  print(lista);
}

Para podermos acessar algum dado específico da lista nos colocamos o index dentro delta desta forma print(lista[0]); que irá nos retornar o primeiro ítem da lista que é "11".

Toda lista tem um tamanho que seria a quantidade de ítens presentes na lista, na lista que criamos tem 4 ítens, em dart chamamos de lenght. Para retornar o tamanho da lista nós fazemos da sequinte forma:

main (List<String> arguments) {
  var lista = [11, 22, 33, "Oi"];
  print(lista.lenght);
}

Podemos também retirar ítem por item utilizando o for:

main (List<String> arguments) {

  var lista = [11, 22, 33, 44];

for (var i =0; i < lista.length; i++){
print ("Índice $i contém ${lista[i]}");
}
}

O resultado do print acima será: 

Índice 0 contém 11
Índice 1 contém 22
Índice 2 contém 33
Índice 3 contém 44

Para saber qual será o último ítem de nossa lista podemos utilizar o length - 1, pois a contagem do índice da lista começa por 0, vejamos:

main (List<String> arguments) {

  var lista = [11, 22, 33, 44];

print(lista[lista.lenght - 1]);
}

O resultado será 44.

Há também outra forma de criar uma lista var lista = List(); e se eu quiser colocar o tipo de lista basta colocar o tipo: var lista = List<String>(); 

Para adicionar os elementos nesta lista nos devemos adicionar o método add:

main (List<String> arguments) {
  var lista = new List<String>();
lista.add("Oi");
lista.add("Tchau");
}

OBS. Em Dart na versão 2.0 não precisa mais colocar o new, na verdade será opcional.

Criando Maps

Ao contrário das listas que começam com [] os mapas começam com {}. Para definir um mapa devemos:

main (List<String> arguments) {
  var jogadores = {
"primeiro";"Ronaldo",
"segundo";"Diego",
"terceiro";"Paulo",
};

  print(jogadores["primeiro"]);
}

Caso queiramos interar utilizando o for para retirar os objetos do mapa, fazemos utilizando o forEach:

main (List<String> arguments) {
  var jogadores = {
"primeiro";"Ronaldo",
"segundo";"Diego",
"terceiro";"Paulo",
};
  jogadores.forEach(
(c, v) => print(c);
)
}

O forEach traz em sua fórmula o (String, String) onde o primeiro será a chave key e o segundo o valor value. No caso acima, iremos printar somente as chaves: primeiro, segundo e terceiro. Caso você queira mostrar só as chaves você pode utilizar o termo keys ou values, vejamos:

main (List<String> arguments) {
  var jogadores = {
"primeiro";"Ronaldo",
"segundo";"Diego",
"terceiro";"Paulo",
};
  var chaves = jogadores.keys;
print(chaves);
}

Irá retornar: (primeiro, segundo, terceiro). Da mesma forma ocorrerá se colocarmos values.

84 Visualizações