fix(player): le bouton plein écran ne faisait rien sous Chrome

La détection lisait `webkitFullscreenElement` et `mozFullScreenElement` via un
cast `dynamic`. dart2js ne retombe pas sur la propriété JavaScript quand le
membre n'est pas déclaré sur la classe `Document` : il lève un
`NoSuchMethodError`, visible en console sous la forme
`method not found: 'gaR5'`. Le test d'état échouait donc à chaque appel, avant
même de pouvoir demander le plein écran.

Seule l'API non préfixée est désormais utilisée ; elle est supportée par tous
les navigateurs visés.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 5 committed 2026-08-11 10:39:38 +02:00
1 parent f490e96448
commit c3b28b8278
1 file changed
+9 -6
+9 -6
View File
@@ -103,12 +103,15 @@ class _PlayerScreenState extends ConsumerState<PlayerScreen> {
super.dispose(); super.dispose();
} }
bool get _documentIsFullscreen { /// Ne teste que l'API non préfixée.
final doc = html.document; ///
return doc.fullscreenElement != null || /// Les variantes `webkitFullscreenElement` / `mozFullScreenElement` étaient
(doc as dynamic).webkitFullscreenElement != null || /// lues via un cast `dynamic` : dart2js ne retombe pas sur la propriété JS
(doc as dynamic).mozFullScreenElement != null; /// pour un membre absent de la classe `Document`, il lève un
} /// `NoSuchMethodError`. Le getter échouait donc systématiquement, et le
/// bouton plein écran ne faisait rien. L'API standard est supportée par
/// tous les navigateurs visés.
bool get _documentIsFullscreen => html.document.fullscreenElement != null;
void _syncFullscreenState() { void _syncFullscreenState() {
final value = _documentIsFullscreen; final value = _documentIsFullscreen;