flutter-macos-permission-handler-camera-failure

Par divinevideo · divine-mobile

Skill documentant le contournement du plugin permission_handler sur macOS dans l'app Flutter Divine, pour éviter les échecs silencieux de caméra/microphone.

npx skills add https://github.com/divinevideo/divine-mobile --skill flutter-macos-permission-handler-camera-failure

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.

Skills similaires