10. Conclusion intermédiaire
Nous avons rencontré, un exemple après l'autre, tout ce qu'il faut pour écrire le client [Flutter] de [RdvMedecins] :
Besoin | En Flutter |
un écran | un arbre de widgets, décrit par build() |
des données qui changent | l'état d'un StatefulWidget (setState), ou un ChangeNotifier |
des formulaires | TextField et ses contrôleurs, InputDecoration.errorText |
plusieurs écrans, des adresses, des gardes | go_router (GoRouter, GoRoute, ShellRoute, redirect) |
des données partagées | provider (ChangeNotifierProvider, context.watch / read) |
attendre | Future, Stream, async / await, FutureBuilder |
des requêtes HTTP | le paquet http, un client qui gère les cookies, une couche d'accès à l'API |
deux langues | des dictionnaires JSON, intl, flutter_localizations |
un stockage sur l'appareil | shared_preferences |
Le client [React] reposait sur une bibliothèque par besoin ; le client [Flutter] en utilise moins : [Dart] apporte l'asynchrone et les types, et [Flutter] les formulaires, les animations, les fenêtres, les listes, le thème. Il reste à assembler le tout.