From 0f44ca923fbd987a30794bb6b3d9b9b59699fbf3 Mon Sep 17 00:00:00 2001 From: BuginRug <57488658+BuginRug@users.noreply.github.com> Date: Wed, 13 Apr 2022 15:45:15 +0200 Subject: [PATCH 1/5] Added customizable timer to hide controls --- example/lib/app/app.dart | 2 ++ lib/src/chewie_player.dart | 6 ++++++ lib/src/cupertino/cupertino_controls.dart | 5 ++++- lib/src/material/material_controls.dart | 5 ++++- lib/src/material/material_desktop_controls.dart | 5 ++++- 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/example/lib/app/app.dart b/example/lib/app/app.dart index 84970d9af..38840241b 100644 --- a/example/lib/app/app.dart +++ b/example/lib/app/app.dart @@ -133,6 +133,8 @@ class _ChewieDemoState extends State { ), ), + hideControlsTimer: const Duration(seconds: 1), + // Try playing around with some of these other options: // showControls: false, diff --git a/lib/src/chewie_player.dart b/lib/src/chewie_player.dart index bffb4d2e9..ea700cab9 100644 --- a/lib/src/chewie_player.dart +++ b/lib/src/chewie_player.dart @@ -280,6 +280,7 @@ class ChewieController extends ChangeNotifier { this.systemOverlaysAfterFullScreen = SystemUiOverlay.values, this.deviceOrientationsAfterFullScreen = DeviceOrientation.values, this.routePageBuilder, + this.hideControlsTimer = const Duration(seconds: 3), }) : assert( playbackSpeeds.every((speed) => speed > 0), 'The playbackSpeeds values must all be greater than 0', @@ -317,6 +318,7 @@ class ChewieController extends ChangeNotifier { bool? allowMuting, bool? allowPlaybackSpeedChanging, bool? useRootNavigator, + Duration? hideControlsTimer, List? playbackSpeeds, List? systemOverlaysOnEnterFullScreen, List? deviceOrientationsOnEnterFullScreen, @@ -374,6 +376,7 @@ class ChewieController extends ChangeNotifier { deviceOrientationsAfterFullScreen: deviceOrientationsAfterFullScreen ?? this.deviceOrientationsAfterFullScreen, routePageBuilder: routePageBuilder ?? this.routePageBuilder, + hideControlsTimer: hideControlsTimer ?? this.hideControlsTimer, ); } @@ -487,6 +490,9 @@ class ChewieController extends ChangeNotifier { /// Defines if push/pop navigations use the rootNavigator final bool useRootNavigator; + /// Define the time interval before the video controls are hidden + final Duration hideControlsTimer; + /// Defines the set of allowed playback speeds user can change final List playbackSpeeds; diff --git a/lib/src/cupertino/cupertino_controls.dart b/lib/src/cupertino/cupertino_controls.dart index bd42dfab0..71234f210 100644 --- a/lib/src/cupertino/cupertino_controls.dart +++ b/lib/src/cupertino/cupertino_controls.dart @@ -759,7 +759,10 @@ class _CupertinoControlsState extends State } void _startHideTimer() { - _hideTimer = Timer(const Duration(seconds: 3), () { + final hideControlsTimer = chewieController.hideControlsTimer.isNegative + ? const Duration(seconds: 3) + : chewieController.hideControlsTimer; + _hideTimer = Timer(hideControlsTimer, () { setState(() { notifier.hideStuff = true; }); diff --git a/lib/src/material/material_controls.dart b/lib/src/material/material_controls.dart index 3f94f57a0..5bdf3e787 100644 --- a/lib/src/material/material_controls.dart +++ b/lib/src/material/material_controls.dart @@ -540,7 +540,10 @@ class _MaterialControlsState extends State } void _startHideTimer() { - _hideTimer = Timer(const Duration(seconds: 3), () { + final hideControlsTimer = chewieController.hideControlsTimer.isNegative + ? const Duration(seconds: 3) + : chewieController.hideControlsTimer; + _hideTimer = Timer(hideControlsTimer, () { setState(() { notifier.hideStuff = true; }); diff --git a/lib/src/material/material_desktop_controls.dart b/lib/src/material/material_desktop_controls.dart index b56ab1357..e54e3171b 100644 --- a/lib/src/material/material_desktop_controls.dart +++ b/lib/src/material/material_desktop_controls.dart @@ -520,7 +520,10 @@ class _MaterialDesktopControlsState extends State } void _startHideTimer() { - _hideTimer = Timer(const Duration(seconds: 3), () { + final hideControlsTimer = chewieController.hideControlsTimer.isNegative + ? const Duration(seconds: 3) + : chewieController.hideControlsTimer; + _hideTimer = Timer(hideControlsTimer, () { setState(() { notifier.hideStuff = true; }); From 6260481419f6f66c396577d9ca709a604114eddd Mon Sep 17 00:00:00 2001 From: BuginRug <57488658+BuginRug@users.noreply.github.com> Date: Wed, 13 Apr 2022 16:42:17 +0200 Subject: [PATCH 2/5] added constant defaultTimer --- lib/src/chewie_player.dart | 4 +++- lib/src/cupertino/cupertino_controls.dart | 2 +- lib/src/material/material_controls.dart | 2 +- lib/src/material/material_desktop_controls.dart | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/src/chewie_player.dart b/lib/src/chewie_player.dart index ea700cab9..812df9a49 100644 --- a/lib/src/chewie_player.dart +++ b/lib/src/chewie_player.dart @@ -280,7 +280,7 @@ class ChewieController extends ChangeNotifier { this.systemOverlaysAfterFullScreen = SystemUiOverlay.values, this.deviceOrientationsAfterFullScreen = DeviceOrientation.values, this.routePageBuilder, - this.hideControlsTimer = const Duration(seconds: 3), + this.hideControlsTimer = defaultTimer, }) : assert( playbackSpeeds.every((speed) => speed > 0), 'The playbackSpeeds values must all be greater than 0', @@ -380,6 +380,8 @@ class ChewieController extends ChangeNotifier { ); } + static const defaultTimer = Duration(seconds: 3); + /// If false, the options button in MaterialUI and MaterialDesktopUI /// won't be shown. final bool showOptions; diff --git a/lib/src/cupertino/cupertino_controls.dart b/lib/src/cupertino/cupertino_controls.dart index 71234f210..ffd141ce7 100644 --- a/lib/src/cupertino/cupertino_controls.dart +++ b/lib/src/cupertino/cupertino_controls.dart @@ -760,7 +760,7 @@ class _CupertinoControlsState extends State void _startHideTimer() { final hideControlsTimer = chewieController.hideControlsTimer.isNegative - ? const Duration(seconds: 3) + ? ChewieController.defaultTimer : chewieController.hideControlsTimer; _hideTimer = Timer(hideControlsTimer, () { setState(() { diff --git a/lib/src/material/material_controls.dart b/lib/src/material/material_controls.dart index 5bdf3e787..3bbe7ac7d 100644 --- a/lib/src/material/material_controls.dart +++ b/lib/src/material/material_controls.dart @@ -541,7 +541,7 @@ class _MaterialControlsState extends State void _startHideTimer() { final hideControlsTimer = chewieController.hideControlsTimer.isNegative - ? const Duration(seconds: 3) + ? ChewieController.defaultTimer : chewieController.hideControlsTimer; _hideTimer = Timer(hideControlsTimer, () { setState(() { diff --git a/lib/src/material/material_desktop_controls.dart b/lib/src/material/material_desktop_controls.dart index e54e3171b..0c87b2ccb 100644 --- a/lib/src/material/material_desktop_controls.dart +++ b/lib/src/material/material_desktop_controls.dart @@ -521,7 +521,7 @@ class _MaterialDesktopControlsState extends State void _startHideTimer() { final hideControlsTimer = chewieController.hideControlsTimer.isNegative - ? const Duration(seconds: 3) + ? ChewieController.defaultTimer : chewieController.hideControlsTimer; _hideTimer = Timer(hideControlsTimer, () { setState(() { From af188e26f7deed01f4bfde16cb4e504ddc5deb13 Mon Sep 17 00:00:00 2001 From: BuginRug <57488658+BuginRug@users.noreply.github.com> Date: Wed, 13 Apr 2022 17:05:25 +0200 Subject: [PATCH 3/5] changed const name to defaultHideControlsTimer --- lib/src/chewie_player.dart | 4 ++-- lib/src/cupertino/cupertino_controls.dart | 2 +- lib/src/material/material_controls.dart | 2 +- lib/src/material/material_desktop_controls.dart | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/src/chewie_player.dart b/lib/src/chewie_player.dart index 812df9a49..76d76ac35 100644 --- a/lib/src/chewie_player.dart +++ b/lib/src/chewie_player.dart @@ -280,7 +280,7 @@ class ChewieController extends ChangeNotifier { this.systemOverlaysAfterFullScreen = SystemUiOverlay.values, this.deviceOrientationsAfterFullScreen = DeviceOrientation.values, this.routePageBuilder, - this.hideControlsTimer = defaultTimer, + this.hideControlsTimer = defaultHideControlsTimer, }) : assert( playbackSpeeds.every((speed) => speed > 0), 'The playbackSpeeds values must all be greater than 0', @@ -380,7 +380,7 @@ class ChewieController extends ChangeNotifier { ); } - static const defaultTimer = Duration(seconds: 3); + static const defaultHideControlsTimer = Duration(seconds: 3); /// If false, the options button in MaterialUI and MaterialDesktopUI /// won't be shown. diff --git a/lib/src/cupertino/cupertino_controls.dart b/lib/src/cupertino/cupertino_controls.dart index ffd141ce7..a4e304ce8 100644 --- a/lib/src/cupertino/cupertino_controls.dart +++ b/lib/src/cupertino/cupertino_controls.dart @@ -760,7 +760,7 @@ class _CupertinoControlsState extends State void _startHideTimer() { final hideControlsTimer = chewieController.hideControlsTimer.isNegative - ? ChewieController.defaultTimer + ? ChewieController.defaultHideControlsTimer : chewieController.hideControlsTimer; _hideTimer = Timer(hideControlsTimer, () { setState(() { diff --git a/lib/src/material/material_controls.dart b/lib/src/material/material_controls.dart index 3bbe7ac7d..4c409e4ca 100644 --- a/lib/src/material/material_controls.dart +++ b/lib/src/material/material_controls.dart @@ -541,7 +541,7 @@ class _MaterialControlsState extends State void _startHideTimer() { final hideControlsTimer = chewieController.hideControlsTimer.isNegative - ? ChewieController.defaultTimer + ? ChewieController.defaultHideControlsTimer : chewieController.hideControlsTimer; _hideTimer = Timer(hideControlsTimer, () { setState(() { diff --git a/lib/src/material/material_desktop_controls.dart b/lib/src/material/material_desktop_controls.dart index 0c87b2ccb..2baa7cb22 100644 --- a/lib/src/material/material_desktop_controls.dart +++ b/lib/src/material/material_desktop_controls.dart @@ -521,7 +521,7 @@ class _MaterialDesktopControlsState extends State void _startHideTimer() { final hideControlsTimer = chewieController.hideControlsTimer.isNegative - ? ChewieController.defaultTimer + ? ChewieController.defaultHideControlsTimer : chewieController.hideControlsTimer; _hideTimer = Timer(hideControlsTimer, () { setState(() { From 5cfaacb2b5a2a37ee526920475076bff9707141b Mon Sep 17 00:00:00 2001 From: BuginRug <57488658+BuginRug@users.noreply.github.com> Date: Wed, 13 Apr 2022 17:09:10 +0200 Subject: [PATCH 4/5] Added comment --- lib/src/chewie_player.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/chewie_player.dart b/lib/src/chewie_player.dart index 76d76ac35..7939ad047 100644 --- a/lib/src/chewie_player.dart +++ b/lib/src/chewie_player.dart @@ -492,7 +492,7 @@ class ChewieController extends ChangeNotifier { /// Defines if push/pop navigations use the rootNavigator final bool useRootNavigator; - /// Define the time interval before the video controls are hidden + /// Defines the time interval before the video controls are hidden. By default, this is three seconds. final Duration hideControlsTimer; /// Defines the set of allowed playback speeds user can change From 673fdd6fbd525894cb644e153c2629a883634312 Mon Sep 17 00:00:00 2001 From: BuginRug <57488658+BuginRug@users.noreply.github.com> Date: Wed, 13 Apr 2022 17:10:25 +0200 Subject: [PATCH 5/5] Updated comment --- lib/src/chewie_player.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/chewie_player.dart b/lib/src/chewie_player.dart index 7939ad047..71eae87f1 100644 --- a/lib/src/chewie_player.dart +++ b/lib/src/chewie_player.dart @@ -492,7 +492,7 @@ class ChewieController extends ChangeNotifier { /// Defines if push/pop navigations use the rootNavigator final bool useRootNavigator; - /// Defines the time interval before the video controls are hidden. By default, this is three seconds. + /// Defines the [Duration] before the video controls are hidden. By default, this is set to three seconds. final Duration hideControlsTimer; /// Defines the set of allowed playback speeds user can change