⬅️ Retour au sommaire du cours
Ce dossier contient le code source complet et fonctionnel du projet de synthèse de la dernière journée de formation : une application Flutter connectée à une API Spring Boot, avec authentification JWT, CRUD complet, recherche, mode sombre persistant et tests.
Vous pouvez vous en servir de modèle de départ pour votre projet Flutter.
C’est le corrigé de référence ; il correspond exactement au cahier des charges décrit dans le Chapitre 5.
projet-final/ ├── pubspec.yaml ├── lib/ │ ├── main.dart # point d'entrée, config des providers, aiguillage login/liste │ ├── models/ │ │ └── etudiant.dart # DTO Etudiant (fromJson/toJson/copyWith) │ ├── services/ │ │ ├── api_config.dart # URL de base de l'API (à adapter !) │ │ ├── token_storage.dart # stockage sécurisé du JWT (flutter_secure_storage) │ │ ├── auth_service.dart # login/logout, en-têtes authentifiés │ │ └── etudiant_service.dart # CRUD réseau /api/etudiants │ ├── providers/ │ │ ├── auth_provider.dart # état de connexion │ │ ├── etudiant_provider.dart # état de la liste des étudiants (recherche, filtre) │ │ └── theme_provider.dart # mode sombre persistant │ ├── screens/ │ │ ├── page_connexion.dart │ │ ├── page_liste_etudiants.dart # Drawer, recherche, filtre, pull-to-refresh │ │ ├── page_formulaire_etudiant.dart # écran unique création/modification │ │ └── page_profil.dart │ └── widgets/ │ └── etudiant_tile.dart # composant de ligne réutilisable └── test/ ├── etudiant_model_test.dart # tests unitaires (sérialisation JSON) └── formulaire_etudiant_widget_test.dart # test de widget (validation de formulaire)
Utilisez le mini backend Spring Boot fourni en Annexe A (endpoints /api/etudiants + /api/auth/login), ou votre propre API respectant les mêmes routes.
/api/etudiants
/api/auth/login
mvn spring-boot:run
Vérifiez qu’il écoute bien sur 0.0.0.0 (voir Annexe A) pour être joignable depuis un téléphone physique.
0.0.0.0
Ouvrez lib/services/api_config.dart et adaptez baseUrl selon votre environnement de test :
lib/services/api_config.dart
baseUrl
class ApiConfig { static const String baseUrl = 'http://10.0.2.2:8080'; // émulateur Android par défaut }
http://10.0.2.2:8080
http://localhost:8080
http://<IP_LOCALE_DE_VOTRE_PC>:8080
(Voir Chapitre 4, section 2 pour le détail.)
cd projet-final flutter pub get flutter run
Avec le backend de référence (Annexe A), utilisez :
admin
password
flutter test
screens/*.dart
providers/*.dart
providers/theme_provider.dart
services/etudiant_service.dart
lib/
services/auth_service.dart
services/token_storage.dart
test/*.dart
http
dio
Interceptor
Provider
Riverpod
go_router
json_serializable
freezed