From 76bb9567cd6d25d355cb83362c8d398f593ef958 Mon Sep 17 00:00:00 2001 From: moahmed Date: Wed, 7 Aug 2024 02:16:43 +0300 Subject: [PATCH 1/4] Added ability to pass the aspect ratio and controls background --- lib/src/controls/flick_portrait_controls.dart | 23 ++++++++++++++----- .../controls/flick_video_with_controls.dart | 4 ++++ .../widgets/flick_native_video_player.dart | 10 ++++---- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/lib/src/controls/flick_portrait_controls.dart b/lib/src/controls/flick_portrait_controls.dart index d4e9fded..2df7db0f 100644 --- a/lib/src/controls/flick_portrait_controls.dart +++ b/lib/src/controls/flick_portrait_controls.dart @@ -3,12 +3,13 @@ import 'package:flick_video_player/flick_video_player.dart'; /// Default portrait controls. class FlickPortraitControls extends StatelessWidget { - const FlickPortraitControls( - {Key? key, - this.iconSize = 20, - this.fontSize = 12, - this.progressBarSettings}) - : super(key: key); + const FlickPortraitControls({ + Key? key, + this.iconSize = 20, + this.fontSize = 12, + this.progressBarSettings, + this.controlsBackgroundColor, + }) : super(key: key); /// Icon size. /// @@ -20,6 +21,8 @@ class FlickPortraitControls extends StatelessWidget { /// This size is used for all the text. final double fontSize; + final Color? controlsBackgroundColor; + /// [FlickProgressBarSettings] settings. final FlickProgressBarSettings? progressBarSettings; @@ -27,6 +30,14 @@ class FlickPortraitControls extends StatelessWidget { Widget build(BuildContext context) { return Stack( children: [ + if (controlsBackgroundColor != null) + Positioned.fill( + child: FlickAutoHideChild( + child: Container( + color: controlsBackgroundColor, + ), + ), + ), Positioned.fill( child: FlickShowControlsAction( child: FlickSeekVideoAction( diff --git a/lib/src/controls/flick_video_with_controls.dart b/lib/src/controls/flick_video_with_controls.dart index c8d38ecc..0ffa9270 100644 --- a/lib/src/controls/flick_video_with_controls.dart +++ b/lib/src/controls/flick_video_with_controls.dart @@ -35,6 +35,7 @@ class FlickVideoWithControls extends StatefulWidget { fontSize: 12, ), this.aspectRatioWhenLoading = 16 / 9, + this.aspectRatio, this.willVideoPlayerControllerChange = true, this.closedCaptionTextStyle = const TextStyle( color: Colors.white, @@ -81,6 +82,8 @@ class FlickVideoWithControls extends StatefulWidget { /// Once the video is initialized, video determines size taken. final double aspectRatioWhenLoading; + final double? aspectRatio; + /// If false videoPlayerController will not be updated. final bool willVideoPlayerControllerChange; @@ -125,6 +128,7 @@ class _FlickVideoWithControlsState extends State { videoPlayerController: _videoPlayerController!, fit: widget.videoFit, aspectRatioWhenLoading: widget.aspectRatioWhenLoading, + aspectRatio: widget.aspectRatio, ) : widget.playerLoadingFallback, ), diff --git a/lib/src/widgets/flick_native_video_player.dart b/lib/src/widgets/flick_native_video_player.dart index f064986c..cd03837f 100644 --- a/lib/src/widgets/flick_native_video_player.dart +++ b/lib/src/widgets/flick_native_video_player.dart @@ -7,11 +7,13 @@ class FlickNativeVideoPlayer extends StatelessWidget { Key? key, this.fit, this.aspectRatioWhenLoading, + this.aspectRatio, required this.videoPlayerController, }) : super(key: key); final BoxFit? fit; final double? aspectRatioWhenLoading; + final double? aspectRatio; final VideoPlayerController? videoPlayerController; @override @@ -23,15 +25,15 @@ class FlickNativeVideoPlayer extends StatelessWidget { return LayoutBuilder( builder: (context, size) { - double aspectRatio = (size.maxHeight == double.infinity || + double usedAspectRatio = (size.maxHeight == double.infinity || size.maxWidth == double.infinity) ? (videoPlayerController?.value.isInitialized == true - ? videoPlayerController?.value.aspectRatio + ? aspectRatio ?? videoPlayerController?.value.aspectRatio : aspectRatioWhenLoading!)! - : size.maxWidth / size.maxHeight; + : (aspectRatio ?? size.maxWidth / size.maxHeight); return AspectRatio( - aspectRatio: aspectRatio, + aspectRatio: usedAspectRatio, child: FittedBox( fit: fit!, child: videoPlayerController?.value.isInitialized == true From 7c506c6cc9cc684d1f756794738995ef9bae2e1e Mon Sep 17 00:00:00 2001 From: moahmed Date: Tue, 3 Dec 2024 21:25:38 +0200 Subject: [PATCH 2/4] . --- lib/src/widgets/flick_full_screen_toggle.dart | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/lib/src/widgets/flick_full_screen_toggle.dart b/lib/src/widgets/flick_full_screen_toggle.dart index 499898e7..f1538025 100644 --- a/lib/src/widgets/flick_full_screen_toggle.dart +++ b/lib/src/widgets/flick_full_screen_toggle.dart @@ -66,19 +66,21 @@ class FlickFullScreenToggle extends StatelessWidget { ? exitFullScreenWidget : enterFullScreenWidget; - return GestureDetector( - key: key, - onTap: () { - if (toggleFullscreen != null) { - toggleFullscreen!(); - } else { - controlManager.toggleFullscreen(); - } - }, - child: Container( - padding: padding, - decoration: decoration, - child: child, + return SafeArea( + child: GestureDetector( + key: key, + onTap: () { + if (toggleFullscreen != null) { + toggleFullscreen!(); + } else { + controlManager.toggleFullscreen(); + } + }, + child: Container( + padding: padding, + decoration: decoration, + child: child, + ), ), ); } From b7991312121cae0fe6eb0680753b1398efcb00e0 Mon Sep 17 00:00:00 2001 From: moahmed Date: Tue, 3 Dec 2024 21:36:47 +0200 Subject: [PATCH 3/4] . --- example/lib/animation_player/landscape_controls.dart | 6 ++++-- .../animation_player/portrait_video_controls.dart | 12 ++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/example/lib/animation_player/landscape_controls.dart b/example/lib/animation_player/landscape_controls.dart index d7865e8b..ed909a3a 100644 --- a/example/lib/animation_player/landscape_controls.dart +++ b/example/lib/animation_player/landscape_controls.dart @@ -102,8 +102,10 @@ class AnimationPlayerLandscapeControls extends StatelessWidget { Expanded( child: Container(), ), - FlickFullScreenToggle( - size: 30, + SafeArea( + child: FlickFullScreenToggle( + size: 100, + ), ), ], ), diff --git a/example/lib/animation_player/portrait_video_controls.dart b/example/lib/animation_player/portrait_video_controls.dart index dab7f705..83f25c7b 100644 --- a/example/lib/animation_player/portrait_video_controls.dart +++ b/example/lib/animation_player/portrait_video_controls.dart @@ -83,10 +83,14 @@ class AnimationPlayerPortraitVideoControls extends StatelessWidget { showIfVideoNotInitialized: false, child: FlickSoundToggle(), ), - FlickAutoHideChild( - autoHide: false, - showIfVideoNotInitialized: false, - child: FlickFullScreenToggle(), + SafeArea( + child: FlickAutoHideChild( + autoHide: false, + showIfVideoNotInitialized: false, + child: FlickFullScreenToggle( + size: 100, + ), + ), ), ], ), From 100cb4d3b38bc88ee6fb0120e0315cdaec96bf3f Mon Sep 17 00:00:00 2001 From: moahmed Date: Tue, 3 Dec 2024 21:44:41 +0200 Subject: [PATCH 4/4] FlickFullScreenToggle --- example/lib/custom_orientation_player/controls.dart | 6 ++++-- example/lib/web_video_player/web_video_control.dart | 6 ++++-- lib/src/controls/flick_portrait_controls.dart | 6 ++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/example/lib/custom_orientation_player/controls.dart b/example/lib/custom_orientation_player/controls.dart index 5aa7e155..4e5c8986 100644 --- a/example/lib/custom_orientation_player/controls.dart +++ b/example/lib/custom_orientation_player/controls.dart @@ -107,8 +107,10 @@ class CustomOrientationControls extends StatelessWidget { Expanded( child: Container(), ), - FlickFullScreenToggle( - size: iconSize, + SafeArea( + child: FlickFullScreenToggle( + size: 100, + ), ), ], ), diff --git a/example/lib/web_video_player/web_video_control.dart b/example/lib/web_video_player/web_video_control.dart index 5fcb1d06..e5c24e64 100644 --- a/example/lib/web_video_player/web_video_control.dart +++ b/example/lib/web_video_player/web_video_control.dart @@ -148,8 +148,10 @@ class WebVideoControl extends StatelessWidget { Expanded( child: Container(), ), - FlickFullScreenToggle( - size: iconSize, + SafeArea( + child: FlickFullScreenToggle( + size: 100, + ), ), ], ), diff --git a/lib/src/controls/flick_portrait_controls.dart b/lib/src/controls/flick_portrait_controls.dart index 2df7db0f..56b173f4 100644 --- a/lib/src/controls/flick_portrait_controls.dart +++ b/lib/src/controls/flick_portrait_controls.dart @@ -111,8 +111,10 @@ class FlickPortraitControls extends StatelessWidget { SizedBox( width: iconSize / 2, ), - FlickFullScreenToggle( - size: iconSize, + SafeArea( + child: FlickFullScreenToggle( + size: 100, + ), ), ], ),