From 7cb615bf9a75dd4cf1e4217c24cdc1f3a28341c9 Mon Sep 17 00:00:00 2001 From: Maxime Britto Date: Tue, 21 Feb 2023 13:26:02 +0100 Subject: [PATCH 1/2] Fix : fullScreenByDefault does not work with autoPlay #710 The first attempt to go full screen just after checking if `autoPlay` is on fails and prevents the second want to be done. --- lib/src/chewie_player.dart | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/src/chewie_player.dart b/lib/src/chewie_player.dart index 7ffa295b2..679391cbc 100644 --- a/lib/src/chewie_player.dart +++ b/lib/src/chewie_player.dart @@ -652,10 +652,6 @@ class ChewieController extends ChangeNotifier { } if (autoPlay) { - if (fullScreenByDefault) { - enterFullScreen(); - } - await videoPlayerController.play(); } @@ -664,14 +660,16 @@ class ChewieController extends ChangeNotifier { } if (fullScreenByDefault) { - videoPlayerController.addListener(_fullScreenListener); + videoPlayerController.addListener(_fullScreenByDefaultListener); } } - Future _fullScreenListener() async { - if (videoPlayerController.value.isPlaying && !_isFullScreen) { + Future _fullScreenByDefaultListener() async { + if (videoPlayerController.value.isPlaying && + fullScreenByDefault && + !_isFullScreen) { enterFullScreen(); - videoPlayerController.removeListener(_fullScreenListener); + videoPlayerController.removeListener(_fullScreenByDefaultListener); } } From ac778c3996663ea1767174326741bb8dfb34d64a Mon Sep 17 00:00:00 2001 From: Maxime Britto Date: Tue, 21 Feb 2023 16:27:49 +0100 Subject: [PATCH 2/2] fix : fullScreenByDefault is unreliable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On some devices, the `VideoPlayerController` can be ready before the `Chewie` widget is. If that happens, the `enterFullScreen()` call does not work and the controller is out of sync believing it’s in full screen where it’s not. Fix attempt : We wait until we have at least one listener before trying to enter full screen --- lib/src/chewie_player.dart | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/src/chewie_player.dart b/lib/src/chewie_player.dart index 679391cbc..7baccffc1 100644 --- a/lib/src/chewie_player.dart +++ b/lib/src/chewie_player.dart @@ -660,16 +660,17 @@ class ChewieController extends ChangeNotifier { } if (fullScreenByDefault) { - videoPlayerController.addListener(_fullScreenByDefaultListener); + videoPlayerController.addListener(_tryToEnableFullScreen); } } - Future _fullScreenByDefaultListener() async { - if (videoPlayerController.value.isPlaying && - fullScreenByDefault && - !_isFullScreen) { + Future _tryToEnableFullScreen() async { + if (fullScreenByDefault && + _isFullScreen == false && + videoPlayerController.value.isPlaying && + hasListeners) { enterFullScreen(); - videoPlayerController.removeListener(_fullScreenByDefaultListener); + videoPlayerController.removeListener(_tryToEnableFullScreen); } }