# mymuseum-visitapp App Flutter pour les visiteurs finaux, installée sur leurs propres devices (smartphone/tablette). ## Fonctionnement - Le visiteur peut scanner un **QR code** pour afficher le détail d'un contenu - Les **beacons** servent à suggérer l'affichage de contenu selon la position du visiteur - Accès au contenu configuré dans `manager-app` pour son instance ## Stack - Flutter mobile (Android + iOS) - State management : **Provider** + **GetX** (hybride) - `ChangeNotifier` pour le contexte global (VisitContext) - `Get.put()` pour les contrôleurs GetX (ex: `RequirementStateController`) - Gestion des langues via `translations.dart` (Helpers) : les langues sont récupérées depuis le backend, pas depuis la locale du device — c'est pourquoi on n'utilise pas `flutter_localizations` pour le contenu - SQLite (`sqflite`) pour le cache local - Firebase Messaging + Local Notifications (push notifications) ## Client API Dépendance locale sur le client généré dans `manager-app` : ```yaml manager_api_new: path: ../manager-app/manager_api_new ``` **Ne pas copier/dupliquer le client** — toujours pointer vers `manager-app/manager_api_new`. ## Structure ``` lib/ ├── api/ # Intégration OpenAPI ├── Components/ # AppBar, language selector, scanner, image/video viewers ├── Helpers/ # DatabaseHelper, networkCheck, translationHelper, modelsHelper ├── l10n/ # ARB files présents mais non utilisés pour le contenu (voir translationHelper) ├── Models/ # VisitContext, beaconSection, articleRead, agenda, weatherData ├── Screens/ │ ├── Home/ # Liste des configurations, écran d'accueil │ ├── ConfigurationPage/ # Setup avec détection beacon │ └── Sections/ # Agenda, Article, Game, Map, Menu, PDF, │ # Quiz, Slider, Video, Weather, Web └── Services/ # apiService, assistantService, downloadConfiguration, # pushNotificationService, statisticsService ``` ## Particularités vs tablet-app - Langues gérées via `translationHelper` + données backend (pas via ARB/flutter_localizations pour le contenu) - Push notifications (Firebase Messaging) - Scanner QR (`mobile_scanner`) + support beacons - Speech-to-text (`speech_to_text`) - Pas de MQTT - GetX en plus de Provider pour certains contrôleurs ## Commandes utiles ```bash flutter run # Lancer sur device/émulateur connecté flutter build apk # Build Android flutter build ios # Build iOS flutter gen-l10n # (peu utile, langues gérées via backend) ```