From 4124d22d111684362256d744f77b67562fc7eacc 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 923996c7a..b8f60af53 100644 --- a/lib/src/chewie_player.dart +++ b/lib/src/chewie_player.dart @@ -553,10 +553,6 @@ class ChewieController extends ChangeNotifier { } if (autoPlay) { - if (fullScreenByDefault) { - enterFullScreen(); - } - await videoPlayerController.play(); } @@ -565,14 +561,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 4d5875755e445fcea1837496166f4c0d3bbaf03d 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 b8f60af53..5cf299122 100644 --- a/lib/src/chewie_player.dart +++ b/lib/src/chewie_player.dart @@ -561,16 +561,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); } }