3.1 KiB
3.1 KiB
manager-app
Interface de gestion de contenu Flutter (web/desktop) pour configurer tablet-app et mymuseum-visitapp.
Stack
- Flutter web (cible principale), support desktop partiel
- State management : Provider +
ChangeNotifier - Navigation : GoRouter
- Firebase Storage (upload de ressources)
Structure
lib/
├── main.dart # Entry point, init Firebase, GoRouter, breakpoints responsive
├── app_context.dart # Provider root wrapping ManagerAppContext
├── client.dart # Wrapper exposant les 12+ facades API générées
├── constants.dart # Couleurs, types de sections, langues, types de ressources
├── Models/ # ManagerAppContext (état central), Session, Menu...
├── Helpers/ # FileHelper (localStorage session), PDFHelper
├── Components/ # 48+ widgets réutilisables (inputs, pickers, players...)
└── Screens/ # Écrans par domaine
├── Main/ # Dashboard principal avec menu latéral
├── Configurations/ # Builder de configuration par type de section
│ └── SubSection/ # Map, Menu, Slider, Quiz, Article, PDF, Video, Weather, Event, Parcours, Game, Agenda
├── Resources/ # CRUD ressources (Image, Video, Audio, PDF, JSON...)
├── Applications/ # Liaison config ↔ app device
├── Kiosk_devices/ # Gestion des devices
├── Users/ # Gestion des utilisateurs
├── ApiKeys/ # Gestion des clés API
├── Notifications/ # Push notifications
└── Statistics/ # Analytics visiteurs
Client API généré (manager_api_new/)
C'est ici que le client est généré. Il est consommé via dépendance locale par tablet-app et mymuseum-visitapp.
- Ne pas modifier manuellement les fichiers dans
manager_api_new/ - Régénérer via OpenAPI generator quand le backend change :
openapi_generator_config.jsonà la racine - 16 classes API : AuthenticationApi, ConfigurationApi, SectionApi, SectionMapApi, SectionEventApi, ResourceApi, DeviceApi, UserApi, StatsApi, AIApi, etc.
- 130+ DTOs générés dans
manager_api_new/lib/model/
État central (ManagerAppContext)
Contient : credentials, accessToken, instanceId, instanceDTO, référence au client API, configuration/section sélectionnée.
Accès via context.read<AppContext>() ou context.watch<AppContext>().
Flow d'authentification
FileHelper().readSessionWeb()→ localStorage- Si pas de session →
/login - POST
/api/Authentication/AuthenticateWithJson→ TokenDTO - Init
Clientavec le host backend - Fetch
InstanceDTO→ détermine les features (isMobile, isTablet, isWeb, isVR, isStatistic) - Redirect vers
/main/:view
Breakpoints responsive
- Mobile : 0–550px
- Tablet : 550–800px
- Desktop : 801–1920px
- 4K : 1921px+
Commandes utiles
flutter run -d chrome # Lancer en web
flutter build web # Build web
flutter pub run build_runner build # Regénérer code généré