Flutter macOS — Échec silencieux de la caméra avec permission_handler
Ce skill documente un problème spécifique rencontré dans le projet Divine Mobile (application Flutter multi-plateforme de partage de vidéos courtes) : le plugin permission_handler ne fonctionne pas de manière fiable sur macOS desktop, ce qui provoque un blocage silencieux de l'écran caméra sans message d'erreur visible pour l'utilisateur.
Problème couvert
Lorsque le BLoC de gestion des permissions appelle Permission.camera.status ou Permission.microphone.status sur macOS, le plugin lève une exception au lieu de retourner un statut. Le BLoC intercepte cette exception et émet un état CameraPermissionError, ce qui empêche l'affichage du VideoRecorderScreen. Sur iOS et Android, le même code fonctionne correctement. Le symptôme caractéristique est une interface placeholder sans log d'initialisation de la caméra.
Solution documentée
Le skill décrit un contournement ciblé : détecter Platform.isMacOS en amont du check de permission et émettre directement CameraPermissionLoaded(authorized), laissant macOS gérer lui-même la demande d'accès au niveau système lors du premier accès réel à la caméra. Le skill fournit le code Dart complet à intégrer dans le BLoC concerné, les imports nécessaires (dart:io, package:flutter/foundation.dart), ainsi que des fixes complémentaires recommandés (gestion d'erreurs dans le service caméra macOS, affichage des erreurs dans l'UI).
Comment utiliser ce skill
Ce skill est destiné à Claude en tant qu'agent dans le contexte du repository divinevideo/divine-mobile. Il sert de référence diagnostique et de guide de correction : lorsqu'un symptôme correspondant aux conditions décrites est identifié, Claude peut s'appuyer sur ce skill pour proposer directement le correctif adapté, vérifier les couches de débogage dans l'ordre suggéré, et anticiper les ajustements connexes dans le service caméra macOS.