0%
Conversor de unidades — Capítulo 57

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 enum enriquecido 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 TextField a um TextEditingController e reagir a cada tecla digitada;
  • restringir a entrada a caracteres numéricos com inputFormatters;
  • distinguir o que um inputFormatter filtra do que double.tryParse valida;
  • 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 NumberFormat do pacote intl;
  • 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 TabController e TabBarView;
  • 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

Link copiado!