Chapitre 57 — Convertisseur d'unités
Partie 1C — Huit mini-projets · Chapitre 57 sur 62 · 12 h
Chapitre 57 — Convertisseur d'unités
Niveau : intermédiaire Durée estimée : 12 h Pré-requis : chapitre 56 — Projet 2 : la calculatrice Ce que vous saurez faire à la fin : construire une application complète pilotée par un formulaire, séparer proprement une logique métier testable de son interface, et écrire les tests unitaires qui prouvent que vos calculs sont justes.
57.0 — Objectifs du chapitre
À la fin de ce chapitre, vous serez capable de :
- modéliser un domaine métier avec un
enumenrichi et une classe de valeur ; - expliquer ce qu'est une unité pivot et pourquoi elle divise le travail par cent ;
- démontrer pourquoi la température ne peut pas se convertir avec un simple facteur ;
- généraliser un modèle « facteur » en modèle « couple de fonctions » ;
- écrire une fonction de conversion pure, sans aucune dépendance à Flutter ;
- brancher un
TextFieldsur unTextEditingControlleret réagir à chaque frappe ; - restreindre la saisie aux caractères numériques avec
inputFormatters; - distinguer ce que filtre un
inputFormatterde ce que validedouble.tryParse; - gérer la virgule décimale française et les espaces de groupement ;
- construire deux
DropdownButton<Unite>synchronisés ; - filtrer la liste des unités selon la catégorie choisie avec
where; - inverser l'unité source et l'unité cible en un seul appel à
setState; - convertir en temps réel via
onChangedsans bouton « Calculer » ; - formater un résultat lisible avec
NumberFormatdu paquetintl; - choisir un nombre de décimales adapté à l'ordre de grandeur du résultat ;
- basculer en notation scientifique pour les nombres extrêmes ;
- organiser six catégories en onglets avec
TabControlleretTabBarView; - conserver l'état de chaque onglet avec
AutomaticKeepAliveClientMixin; - tenir un historique des conversions validées ;
- persister le dernier choix de l'utilisateur avec
shared_preferences; - écrire une suite de tests unitaires qui vérifie chaque famille de conversion.
Commentaires
Les commentaires sont alimentés par GitHub Discussions
Connectez-vous avec GitHub pour participer à la discussion