Aller au contenu

⬅️ Retour au sommaire du cours

Projet final — Gestion Scolaire

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.

🗂️ Structure du projet

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)

⚙️ Mise en route

1. Préparer le backend

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.

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.

2. Configurer l’URL de l’API côté Flutter

Ouvrez lib/services/api_config.dart et adaptez baseUrl selon votre environnement de test :

class ApiConfig {
  static const String baseUrl = 'http://10.0.2.2:8080'; // émulateur Android par défaut
}
Environnement Valeur à utiliser
Émulateur Android http://10.0.2.2:8080
Simulateur iOS http://localhost:8080
Téléphone physique http://<IP_LOCALE_DE_VOTRE_PC>:8080

(Voir Chapitre 4, section 2 pour le détail.)

3. Installer les dépendances et lancer l’application

cd projet-final
flutter pub get
flutter run

4. Se connecter

Avec le backend de référence (Annexe A), utilisez :

5. Lancer les tests

flutter test

Fonctionnalités couvertes (mapping avec le cours)

Fonctionnalité Jour du cours Fichier(s) concerné(s)
Widgets, layouts, formulaires Jour 1-2-3 screens/*.dart
Provider (state management) Jour 3 providers/*.dart
Mode sombre persistant Jour 3 providers/theme_provider.dart
Appels REST CRUD vers Spring Boot Jour 4 services/etudiant_service.dart
Architecture en couches Jour 4-5 Structure globale du dossier lib/
Authentification JWT Jour 5 services/auth_service.dart, services/token_storage.dart
Tests unitaires et de widget Jour 5 test/*.dart
Build & déploiement Jour 5 voir Chapitre 5, section 3

🚀 Pour aller plus loin

⬅️ Retour au sommaire du cours