twonly-app/lib/src/views/components/video_player_wrapper.dart
2025-10-24 00:03:42 +02:00

54 lines
1.3 KiB
Dart

import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
class VideoPlayerWrapper extends StatefulWidget {
const VideoPlayerWrapper({
required this.videoPath,
super.key,
});
final File videoPath;
@override
State<VideoPlayerWrapper> createState() => _VideoPlayerWrapperState();
}
class _VideoPlayerWrapperState extends State<VideoPlayerWrapper> {
late VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller = VideoPlayerController.file(widget.videoPath);
unawaited(
_controller.initialize().then((_) async {
if (context.mounted) {
await _controller.setLooping(true);
await _controller.play();
setState(() {});
}
}),
);
}
@override
void dispose() {
unawaited(_controller.dispose());
super.dispose();
}
@override
Widget build(BuildContext context) {
return Center(
child: _controller.value.isInitialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: const CircularProgressIndicator(), // Show loading indicator while initializing
);
}
}