From d562086802a5d457a38ccca08a95a2e00b2af54a Mon Sep 17 00:00:00 2001 From: Murphy Crosby Date: Fri, 3 Mar 2023 22:06:08 -0600 Subject: [PATCH] Update for the overlay builder --- lib/src/chewie_player.dart | 6 ++++++ lib/src/player_with_controls.dart | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/src/chewie_player.dart b/lib/src/chewie_player.dart index 923996c7a..0971c6fba 100644 --- a/lib/src/chewie_player.dart +++ b/lib/src/chewie_player.dart @@ -257,6 +257,7 @@ class ChewieController extends ChangeNotifier { this.materialProgressColors, this.placeholder, this.overlay, + this.overlayBuilder, this.showControlsOnInitialize = true, this.showOptions = true, this.optionsBuilder, @@ -304,6 +305,7 @@ class ChewieController extends ChangeNotifier { ChewieProgressColors? materialProgressColors, Widget? placeholder, Widget? overlay, + Widget Function(BuildContext)? overlayBuilder, bool? showControlsOnInitialize, bool? showOptions, Future Function(BuildContext, List)? optionsBuilder, @@ -354,6 +356,7 @@ class ChewieController extends ChangeNotifier { materialProgressColors ?? this.materialProgressColors, placeholder: placeholder ?? this.placeholder, overlay: overlay ?? this.overlay, + overlayBuilder: overlayBuilder ?? this.overlayBuilder, showControlsOnInitialize: showControlsOnInitialize ?? this.showControlsOnInitialize, showOptions: showOptions ?? this.showOptions, @@ -390,6 +393,9 @@ class ChewieController extends ChangeNotifier { static const defaultHideControlsTimer = Duration(seconds: 3); + /// Define here your own Widget on how your overlay will look + Widget Function(BuildContext context)? overlayBuilder; + /// If false, the options button in MaterialUI and MaterialDesktopUI /// won't be shown. final bool showOptions; diff --git a/lib/src/player_with_controls.dart b/lib/src/player_with_controls.dart index 75b3525ed..a8ede1198 100644 --- a/lib/src/player_with_controls.dart +++ b/lib/src/player_with_controls.dart @@ -20,6 +20,16 @@ class PlayerWithControls extends StatelessWidget { return width > height ? width / height : height / width; } + Widget buildOverlay(BuildContext context) { + if(chewieController.overlayBuilder != null) { + return chewieController.overlayBuilder!(context); + } + if (chewieController.overlay != null) { + return chewieController.overlay!; + } + return const SizedBox.shrink(); + } + Widget buildControls( BuildContext context, ChewieController chewieController, @@ -50,7 +60,7 @@ class PlayerWithControls extends StatelessWidget { ), ), ), - if (chewieController.overlay != null) chewieController.overlay!, + buildOverlay(context), if (Theme.of(context).platform != TargetPlatform.iOS) Consumer( builder: (