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();
}
bool get _documentIsFullscreen {
final doc = html.document;
return doc.fullscreenElement != null ||
(doc as dynamic).webkitFullscreenElement != null ||
(doc as dynamic).mozFullScreenElement != null;
}
/// Ne teste que l'API non préfixée.
///
/// Les variantes `webkitFullscreenElement` / `mozFullScreenElement` étaient
/// lues via un cast `dynamic` : dart2js ne retombe pas sur la propriété JS
/// 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() {
final value = _documentIsFullscreen;