Mobile App Development · Dart/Flutter
Sete exercícios curtos para praticar List, Map, Set e os métodos where e map.
Exercício 1
Cria uma List<String> tipada com três nomes, adiciona um quarto com add() e percorre a lista com for-in, imprimindo cada nome em uma linha.
// Demonstração de List<String> — lista de strings em Dart.
// List é uma coleção ordenada que permite duplicatas e acesso por índice.
void main() {
// Cria uma lista tipada de nomes com três elementos iniciais.
// List<String> só aceita valores do tipo String.
List<String> nomes = ['Ana', 'Bia', 'Carlos'];
// add() insere um novo elemento ao final da lista.
nomes.add('Davi');
// for-in percorre cada elemento da lista em ordem de inserção.
for (String nome in nomes) {
print(nome);
}
}
Saída esperada
Ana Bia Carlos Davi
Como executar
dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_01_lista_nomes.dart
Exercício 2
Cria uma List<int> e usa um acumulador para somar todos os elementos, percorrendo a lista com for-in e +=.
// Demonstração de List<int> com acumulador para calcular a soma dos elementos.
// Mostra como iterar uma lista e acumular valores com o operador +=.
void main() {
// Lista de números inteiros.
List<int> numeros = [10, 20, 30, 40];
// Acumulador inicializado com zero — vai acumular a soma de todos os elementos.
int soma = 0;
// Para cada número na lista, adiciona seu valor ao acumulador.
for (int numero in numeros) {
soma += numero; // Equivalente a: soma = soma + numero
}
// Exibe o resultado: 10 + 20 + 30 + 40 = 100.
print('Soma: $soma');
}
Saída esperada
Soma: 100
Como executar
dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_02_lista_numeros.dart
Exercício 3
Cria um Map<String, dynamic> com nome, idade e status ativo de um usuário e acessa cada valor pela chave, usando dynamic porque os valores têm tipos diferentes.
// Demonstração de Map em Dart — coleção de pares chave-valor.
// Map<String, dynamic>: chaves são Strings e valores podem ser de qualquer tipo.
// 'dynamic' permite misturar tipos diferentes nos valores (String, int, bool etc.).
void main() {
// Cria um Map com três entradas: nome (String), idade (int) e ativo (bool).
Map<String, dynamic> usuario = {'nome': 'Ana', 'idade': 24, 'ativo': true};
// Acessa os valores pelo nome da chave entre colchetes [].
// O valor retornado pode ser de qualquer tipo (dynamic).
print('Nome: ${usuario['nome']}');
print('Idade: ${usuario['idade']}');
print('Ativo: ${usuario['ativo']}');
}
Saída esperada
Nome: Ana Idade: 24 Ativo: true
Como executar
dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_03_map_usuario.dart
Exercício 4
Converte uma lista com um valor repetido em um Set<String> com .toSet(), eliminando a duplicata, e adiciona uma nova tag com add().
// Demonstração de Set em Dart — coleção que não permite elementos duplicados.
// Set<String>: armazena strings únicas; a ordem não é garantida.
// Diferença de List: Set elimina automaticamente duplicatas.
void main() {
// O valor 'dart' aparece duas vezes, mas o Set elimina a duplicata.
// Resultado real: {'dart', 'flutter', 'mobile'} (sem repetição).
Set<String> tags = ['dart', 'flutter', 'mobile', 'dart'].toSet();
// add() insere 'web' — só é adicionado se ainda não existir no Set.
tags.add('web');
// Imprime o Set completo — a saída mostra os elementos sem duplicatas.
print(tags);
}
Saída esperada
{dart, flutter, mobile, web}
Como executar
dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_04_set_tags.dart
Exercício 5
Usa where para filtrar apenas os números pares de uma lista, com isEven como condição, e converte o resultado de volta para List com .toList().
// Demonstração do método 'where' para filtrar elementos de uma lista.
// 'where' recebe uma função anônima (lambda) e retorna apenas os elementos
// para os quais a função retorna true.
void main() {
List<int> numeros = [1, 2, 3, 4, 5, 6, 7, 8];
// where((numero) => numero.isEven) filtra apenas os números pares.
// isEven é uma propriedade de int que retorna true se o número for par.
// toList() converte o resultado do 'where' (Iterable) de volta para uma List.
List<int> pares = numeros.where((numero) => numero.isEven).toList();
// Exibe os números pares filtrados: [2, 4, 6, 8].
print('Pares: $pares');
}
Saída esperada
Pares: [2, 4, 6, 8]
Como executar
dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_05_where.dart
Exercício 6
Usa map para transformar cada nome de uma lista em maiúsculas com toUpperCase(), sem alterar a lista original, convertendo o resultado com .toList().
// Demonstração do método 'map' para transformar elementos de uma lista.
// 'map' aplica uma função a cada elemento e retorna um novo Iterable
// com os valores transformados — sem alterar a lista original.
void main() {
List<String> nomes = ['ana', 'bia', 'carlos'];
// map((nome) => nome.toUpperCase()) transforma cada String para maiúsculas.
// toUpperCase() é um método de String que converte todos os caracteres.
// toList() converte o Iterable resultante de volta para uma List<String>.
List<String> nomesFormatados = nomes
.map((nome) => nome.toUpperCase())
.toList();
// Exibe a lista transformada: ['ANA', 'BIA', 'CARLOS'].
print(nomesFormatados);
}
Saída esperada
[ANA, BIA, CARLOS]
Como executar
dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_06_map_transformacao.dart
Exercício 7
Cria uma List<Map<String, dynamic>> — uma lista de mapas — para representar produtos sem precisar criar uma classe, e percorre cada mapa acessando seus valores pelas chaves.
// Demonstração de List<Map<String, dynamic>> — lista de mapas.
// Usada quando precisamos de uma coleção de objetos estruturados
// sem criar uma classe dedicada. Cada mapa representa um produto.
void main() {
// Lista onde cada elemento é um Map com as chaves 'nome' e 'preco'.
List<Map<String, dynamic>> produtos = [
{'nome': 'Mouse', 'preco': 89.90},
{'nome': 'Teclado', 'preco': 150.00},
{'nome': 'Monitor', 'preco': 900.00},
];
// Percorre cada mapa da lista e acessa seus valores pelas chaves.
for (Map<String, dynamic> produto in produtos) {
// produto['nome'] retorna o valor da chave 'nome' (String).
// produto['preco'] retorna o valor da chave 'preco' (double).
print('${produto['nome']}: R\$ ${produto['preco'].toStringAsFixed(2)}');
}
}
Saída esperada
Mouse: R$ 89.90 Teclado: R$ 150.00 Monitor: R$ 900.00
Como executar
dart run 07-Array/02_Exercicios/codigo_fonte/exercicio_07_lista_mapas.dart