This commit is contained in:
2025-06-24 13:05:08 +02:00
parent ba7505c2b3
commit 93a89ba4b9
3 changed files with 67 additions and 67 deletions

View File

@ -17,6 +17,7 @@ class VideoWidget extends StatefulWidget {
final bool fullScreen;
final VoidCallback? onInitialized;
final Duration? initialPosition;
final VoidCallback? onDoubleTap;
const VideoWidget({
super.key,
@ -25,6 +26,7 @@ class VideoWidget extends StatefulWidget {
this.fullScreen = false,
this.onInitialized,
this.initialPosition,
this.onDoubleTap,
});
@override
@ -56,6 +58,7 @@ class VideoWidgetState extends State<VideoWidget> {
await videoController.initialize();
if (!mounted) return;
// Rebuild the widget to reflect the initialized state
setState(() {});
if (widget.initialPosition != null) {
@ -100,7 +103,8 @@ class VideoWidgetState extends State<VideoWidget> {
@override
Widget build(BuildContext context) {
bool isAudio = widget.details.mime.startsWith('audio');
final bool isInitialized = videoController.value.isInitialized;
final bool isAudio = widget.details.mime.startsWith('audio');
Widget mediaContent;
if (isAudio) {
@ -114,30 +118,26 @@ class VideoWidgetState extends State<VideoWidget> {
),
);
} else {
mediaContent = videoController.value.isInitialized
mediaContent = isInitialized
? CachedVideoPlayerPlus(videoController)
: const Center(child: CircularProgressIndicator());
}
return AspectRatio(
aspectRatio: videoController.value.isInitialized
aspectRatio: isInitialized
? videoController.value.aspectRatio
: (isAudio ? 16 / 9 : 9 / 16),
child: Stack(
alignment: Alignment.center,
children: [
mediaContent,
AnimatedBuilder(
animation: videoController,
builder: (context, child) {
if (videoController.value.isInitialized) {
return Positioned.fill(
child: VideoControlsOverlay(controller: videoController),
);
}
return const SizedBox.shrink();
},
),
if (isInitialized)
Positioned.fill(
child: VideoControlsOverlay(
controller: videoController,
onDoubleTap: widget.onDoubleTap,
),
),
],
),
);