Flutter macOS — Échec silencieux de la caméra avec permission_handler
Ce skill est une fiche de diagnostic et de correction ciblée, rattachée au projet Divine (divinevideo/divine-mobile), une application Flutter de partage de vidéos courtes basée sur Nostr. Il documente un problème spécifique à la plateforme macOS desktop : le plugin permission_handler ne fonctionne pas de manière fiable sur macOS, ce qui provoque des erreurs silencieuses dans le BLoC de gestion des permissions caméra/microphone, empêchant l'affichage de l'écran d'enregistrement.
Problème couvert
Lorsque l'application tourne sur macOS (via ./run_dev.sh macos debug), les appels à Permission.camera.status ou Permission.microphone.status lèvent des exceptions au lieu de retourner un statut. Le BLoC intercepte ces exceptions et émet un état CameraPermissionError, laissant l'utilisateur face à une UI placeholder sans message d'erreur explicite. Le même code fonctionne correctement sur iOS et Android.
Solution documentée
Le skill décrit une stratégie de contournement plateforme : détecter Platform.isMacOS dans le gestionnaire de l'événement de vérification des permissions, ignorer permission_handler, et émettre directement l'état CameraPermissionLoaded(authorized). macOS gère nativement les permissions caméra via sa propre boîte de dialogue système, qui s'affiche lors du premier accès réel à la caméra.
Le skill détaille également des couches de débogage complémentaires (permission, initialisation, détection de dispositif, contrôleur), des ajouts recommandés dans le service caméra macOS, et les références officielles Flutter/Apple pertinentes. Il s'agit d'un correctif documenté et validé, prêt à être appliqué dans le contexte de l'architecture BLoC de Divine.