diff --git a/lib/src/chewie_player.dart b/lib/src/chewie_player.dart index a153b9110..83c60c7f5 100644 --- a/lib/src/chewie_player.dart +++ b/lib/src/chewie_player.dart @@ -289,6 +289,7 @@ class ChewieController extends ChangeNotifier { this.subtitleBuilder, this.customControls, this.errorBuilder, + this.bufferingBuilder, this.allowedScreenSleep = true, this.isLive = false, this.allowFullScreen = true, @@ -336,6 +337,7 @@ class ChewieController extends ChangeNotifier { Subtitles? subtitle, Widget Function(BuildContext, dynamic)? subtitleBuilder, Widget? customControls, + WidgetBuilder? bufferingBuilder, Widget Function(BuildContext, String)? errorBuilder, bool? allowedScreenSleep, bool? isLive, @@ -385,6 +387,7 @@ class ChewieController extends ChangeNotifier { subtitleBuilder: subtitleBuilder ?? this.subtitleBuilder, customControls: customControls ?? this.customControls, errorBuilder: errorBuilder ?? this.errorBuilder, + bufferingBuilder: bufferingBuilder ?? this.bufferingBuilder, allowedScreenSleep: allowedScreenSleep ?? this.allowedScreenSleep, isLive: isLive ?? this.isLive, allowFullScreen: allowFullScreen ?? this.allowFullScreen, @@ -485,6 +488,9 @@ class ChewieController extends ChangeNotifier { final Widget Function(BuildContext context, String errorMessage)? errorBuilder; + /// When the video is buffering, you can build a custom widget. + final WidgetBuilder? bufferingBuilder; + /// The Aspect Ratio of the Video. Important to get the correct size of the /// video! /// diff --git a/lib/src/cupertino/cupertino_controls.dart b/lib/src/cupertino/cupertino_controls.dart index 32a6fb8dc..604a9d17a 100644 --- a/lib/src/cupertino/cupertino_controls.dart +++ b/lib/src/cupertino/cupertino_controls.dart @@ -94,9 +94,10 @@ class _CupertinoControlsState extends State child: Stack( children: [ if (_displayBufferingIndicator) - const Center( - child: CircularProgressIndicator(), - ) + _chewieController?.bufferingBuilder?.call(context) ?? + const Center( + child: CircularProgressIndicator(), + ) else _buildHitArea(), Column( diff --git a/lib/src/material/material_controls.dart b/lib/src/material/material_controls.dart index 419be5b39..ee3771467 100644 --- a/lib/src/material/material_controls.dart +++ b/lib/src/material/material_controls.dart @@ -85,9 +85,10 @@ class _MaterialControlsState extends State child: Stack( children: [ if (_displayBufferingIndicator) - const Center( - child: CircularProgressIndicator(), - ) + _chewieController?.bufferingBuilder?.call(context) ?? + const Center( + child: CircularProgressIndicator(), + ) else _buildHitArea(), _buildActionBar(), diff --git a/lib/src/material/material_desktop_controls.dart b/lib/src/material/material_desktop_controls.dart index 512e3ad7e..0265d2880 100644 --- a/lib/src/material/material_desktop_controls.dart +++ b/lib/src/material/material_desktop_controls.dart @@ -86,9 +86,10 @@ class _MaterialDesktopControlsState extends State child: Stack( children: [ if (_displayBufferingIndicator) - const Center( - child: CircularProgressIndicator(), - ) + _chewieController?.bufferingBuilder?.call(context) ?? + const Center( + child: CircularProgressIndicator(), + ) else _buildHitArea(), Column(