Capítulo 57 — Convertidor de unidades
Parte 1C — Ocho miniproyectos · Capítulo 57 de 62 · 12 h
Capítulo 57 — Convertidor de unidades
Nivel: intermedio Duración estimada: 12 h Requisitos previos: capítulo 56 — Proyecto 2: la calculadora Lo que sabrás hacer al final: construir una aplicación completa controlada por un formulario, separar limpiamente una lógica de negocio testeable de su interfaz, y escribir las pruebas unitarias que demuestran que tus cálculos son correctos.
57.0 — Objetivos del capítulo
Al final de este capítulo, serás capaz de:
- modelar un dominio de negocio con un
enumenriquecido y una clase de valor; - explicar qué es una unidad pivote y por qué divide el trabajo por cien;
- demostrar por qué la temperatura no puede convertirse con un simple factor;
- generalizar un modelo « factor » en un modelo « par de funciones »;
- escribir una función de conversión pura, sin ninguna dependencia de Flutter;
- conectar un
TextFielda unTextEditingControllery reaccionar a cada pulsación; - restringir la entrada a caracteres numéricos con
inputFormatters; - distinguir lo que filtra un
inputFormatterde lo que validadouble.tryParse; - gestionar la coma decimal francesa y los espacios de agrupación;
- construir dos
DropdownButton<Unite>sincronizados; - filtrar la lista de unidades según la categoría elegida con
where; - intercambiar la unidad de origen y la unidad de destino con una sola llamada a
setState; - convertir en tiempo real mediante
onChangedsin botón « Calcular »; - formatear un resultado legible con
NumberFormatdel paqueteintl; - elegir un número de decimales adaptado al orden de magnitud del resultado;
- pasar a notación científica para los números extremos;
- organizar seis categorías en pestañas con
TabControlleryTabBarView; - conservar el estado de cada pestaña con
AutomaticKeepAliveClientMixin; - llevar un historial de las conversiones validadas;
- persistir la última elección del usuario con
shared_preferences; - escribir una batería de pruebas unitarias que verifique cada familia de conversión.
Comentarios
Los comentarios funcionan con GitHub Discussions
Inicia sesión con GitHub para participar en la discusión