Capítulo 57 — Conversor de unidades
Parte 1C — Oito miniprojetos · Capítulo 57 de 62 · 12 h
Capítulo 57 — Conversor de unidades
Nível: intermediário Duração estimada: 12 h Pré-requisitos: capítulo 56 — Projeto 2: a calculadora O que você será capaz de fazer ao final: construir um aplicativo completo orientado por formulário, separar de forma limpa uma lógica de negócio testável da sua interface e escrever os testes unitários que provam que seus cálculos estão corretos.
57.0 — Objetivos do capítulo
Ao final deste capítulo, você será capaz de:
- modelar um domínio de negócio com um
enumenriquecido e uma classe de valor; - explicar o que é uma unidade pivô e por que ela divide o trabalho por cem;
- demonstrar por que a temperatura não pode ser convertida com um simples fator;
- generalizar um modelo de «fator» para um modelo de «par de funções»;
- escrever uma função de conversão pura, sem nenhuma dependência do Flutter;
- conectar um
TextFielda umTextEditingControllere reagir a cada tecla digitada; - restringir a entrada a caracteres numéricos com
inputFormatters; - distinguir o que um
inputFormatterfiltra do quedouble.tryParsevalida; - tratar a vírgula decimal francesa e os espaços de agrupamento;
- construir dois
DropdownButton<Unite>sincronizados; - filtrar a lista de unidades de acordo com a categoria escolhida com
where; - inverter a unidade de origem e a unidade de destino em uma única chamada a
setState; - converter em tempo real via
onChanged, sem botão «Calcular»; - formatar um resultado legível com
NumberFormatdo pacoteintl; - escolher um número de casas decimais adequado à ordem de grandeza do resultado;
- alternar para a notação científica em números extremos;
- organizar seis categorias em abas com
TabControllereTabBarView; - preservar o estado de cada aba com
AutomaticKeepAliveClientMixin; - manter um histórico das conversões confirmadas;
- persistir a última escolha do usuário com
shared_preferences; - escrever uma suíte de testes unitários que verifica cada família de conversão.
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão