Mobile App Development · Dart/Flutter
Coloque em prática tipos básicos, inferência com var, final/const, interpolação de string, conversões e variáveis nullable.
Exercício
Declara variáveis com os quatro tipos básicos — String, int, double e bool — todas com tipo explícito, e exibe cada uma com interpolação de string.
// Este programa apresenta os tipos primitivos básicos do Dart:
// String (texto), int (inteiro), double (decimal) e bool (verdadeiro/falso).
void main() {
// String: armazena sequências de caracteres (texto).
String nome = 'Ana Martins';
// int: armazena números inteiros (sem parte decimal).
int idade = 24;
// double: armazena números com ponto flutuante (com parte decimal).
double altura = 1.68;
// bool: armazena apenas dois valores possíveis — true ou false.
bool estudante = true;
// Interpolação de String: usa $ para inserir o valor de uma variável dentro do texto.
print('Nome: $nome');
print('Idade: $idade');
print('Altura: $altura');
print('Estudante: $estudante');
}
Saída esperada
Nome: Ana Martins Idade: 24 Altura: 1.68 Estudante: true
Como executar
dart run 04-Variaveis/02_Exercicios/codigo_fonte/exercicio_01_tipos_basicos.dart
Exercício
Declara quatro variáveis com var e usa runtimeType para mostrar que, mesmo sem tipo explícito, o Dart infere e fixa um tipo para cada uma a partir do valor inicial.
// Demonstração de inferência de tipo com a palavra-chave 'var'.
// Quando usamos 'var', o Dart deduz automaticamente o tipo da variável
// com base no valor atribuído — isso é chamado de inferência de tipo.
void main() {
// O Dart infere que 'tecnologia' é do tipo String.
var tecnologia = 'Flutter';
// O Dart infere que 'anoAtual' é do tipo int.
var anoAtual = 2026;
// O Dart infere que 'versaoAplicativo' é do tipo double.
var versaoAplicativo = 1.5;
// O Dart infere que 'cursoAtivo' é do tipo bool.
var cursoAtivo = true;
// runtimeType revela o tipo real inferido pelo Dart em tempo de execução.
// A expressão ${variavel.runtimeType} exibe o nome do tipo entre parênteses.
print('Tecnologia: $tecnologia (${tecnologia.runtimeType})');
print('Ano atual: $anoAtual (${anoAtual.runtimeType})');
print(
'Versao do aplicativo: $versaoAplicativo (${versaoAplicativo.runtimeType})',
);
print('Curso ativo: $cursoAtivo (${cursoAtivo.runtimeType})');
}
Saída esperada
Tecnologia: Flutter (String) Ano atual: 2026 (int) Versao do aplicativo: 1.5 (double) Curso ativo: true (bool)
Como executar
dart run 04-Variaveis/02_Exercicios/codigo_fonte/exercicio_02_inferencia_var.dart
Exercício
Compara final (valor definido uma vez, mas conhecido apenas em tempo de execução) com const (constante já conhecida em tempo de compilação) em um cadastro simples de aluno e curso.
// Demonstração das palavras-chave 'final' e 'const' em Dart.
// 'final': o valor é definido uma vez e não pode ser alterado depois (imutável em runtime).
// 'const': o valor é uma constante de tempo de compilação (conhecido antes de executar).
void main() {
// 'final' aceita valores que só serão conhecidos em tempo de execução,
// mas uma vez atribuído, não pode ser reatribuído.
final nomeAluno = 'Joao Pereira';
// 'const' exige que o valor seja uma constante literal conhecida em compile time.
const nomeCurso = 'Dart e Flutter';
// Outro exemplo de constante numérica — não muda durante a execução.
const cargaHoraria = 120;
// Exibe os dados usando interpolação de String.
print('Aluno: $nomeAluno');
print('Curso: $nomeCurso');
print('Carga horaria: $cargaHoraria horas');
// Combina múltiplas variáveis em uma única mensagem formatada.
print('$nomeAluno iniciou o curso $nomeCurso.');
}
Saída esperada
Aluno: Joao Pereira Curso: Dart e Flutter Carga horaria: 120 horas Joao Pereira iniciou o curso Dart e Flutter.
Como executar
dart run 04-Variaveis/02_Exercicios/codigo_fonte/exercicio_03_final_const.dart
Exercício
Usa interpolação simples com $variavel e interpolação de expressão com ${...} para calcular e formatar o total de um item de compra.
// Demonstração de interpolação de String e expressões embutidas.
// A interpolação permite inserir variáveis e expressões diretamente em Strings
// usando $variavel ou ${expressao} para cálculos mais complexos.
void main() {
// Variáveis que representam um item de compra.
String produto = 'Mouse';
int quantidade = 2;
double precoUnitario = 89.90;
// Cálculo do valor total: multiplicação de quantidade pelo preço unitário.
double total = quantidade * precoUnitario;
// Interpolação simples com $variavel (sem chaves) para valores únicos.
print('Produto: $produto');
print('Quantidade: $quantidade');
// Interpolação com ${expressao} necessária quando há chamada de método.
// toStringAsFixed(2) formata o número com exatamente 2 casas decimais.
// O \$ exibe o cifrão literalmente (barra invertida escapa o caractere especial).
print('Preco unitario: R\$ ${precoUnitario.toStringAsFixed(2)}');
print('Total: R\$ ${total.toStringAsFixed(2)}');
}
Saída esperada
Produto: Mouse Quantidade: 2 Preco unitario: R$ 89.90 Total: R$ 179.80
Como executar
dart run 04-Variaveis/02_Exercicios/codigo_fonte/exercicio_04_interpolacao.dart
Exercício
Converte texto recebido como String para int e double usando int.parse e double.parse, e então realiza cálculos com os valores convertidos.
// Demonstração de conversão de tipos (parsing) em Dart.
// Frequentemente recebemos dados como String (texto) e precisamos convertê-los
// para tipos numéricos antes de realizar cálculos.
void main() {
// Simulação de valores recebidos como texto (ex.: entrada do usuário ou API).
String idadeTexto = '25';
String alturaTexto = '1.75';
// int.parse() converte uma String para int.
// Lança FormatException se a String não for um número inteiro válido.
int idade = int.parse(idadeTexto);
// double.parse() converte uma String para double.
// Lança FormatException se a String não for um número decimal válido.
double altura = double.parse(alturaTexto);
// Após a conversão, podemos realizar operações matemáticas normalmente.
// idade + 1 calcula a idade no próximo aniversário.
print('Idade no proximo ano: ${idade + 1}');
// toStringAsFixed(2) exibe o double com 2 casas decimais fixas.
print('Altura formatada: ${altura.toStringAsFixed(2)}');
}
Saída esperada
Idade no proximo ano: 26 Altura formatada: 1.75
Como executar
dart run 04-Variaveis/02_Exercicios/codigo_fonte/exercicio_05_conversoes.dart
Exercício
Declara uma variável String? sem valor inicial (o padrão é null) e mostra a diferença antes e depois de receber um valor concreto.
// Demonstração de variáveis nullable (anuláveis) em Dart.
// Por padrão, variáveis em Dart não podem ser null (null safety).
// Para permitir null, adicionamos '?' após o tipo: String? aceita String ou null.
void main() {
// String? significa que 'apelido' pode ser uma String ou null.
// Sem atribuição inicial, o valor padrão é null.
String? apelido;
// Exibe null porque nenhum valor foi atribuído ainda.
print('Antes da atribuicao, o apelido era: $apelido');
// Agora atribuímos um valor concreto à variável nullable.
apelido = 'Bia';
// Exibe o valor atribuído: 'Bia'.
print('Depois da atribuicao, o apelido e: $apelido');
}
Saída esperada
Antes da atribuicao, o apelido era: null Depois da atribuicao, o apelido e: Bia
Como executar
dart run 04-Variaveis/02_Exercicios/codigo_fonte/exercicio_06_nullable.dart