v1.4.1+62
All checks were successful
Flutter Schmutter / build (push) Successful in 3m48s

This commit is contained in:
2025-06-21 13:40:44 +02:00
parent 2b5aaad331
commit 73a44bb269
15 changed files with 608 additions and 515 deletions

View File

@ -14,12 +14,14 @@ class VideoWidget extends StatefulWidget {
final MediaItem details;
final bool isActive;
final bool fullScreen;
final VoidCallback? onInitialized;
const VideoWidget({
super.key,
required this.details,
required this.isActive,
this.fullScreen = false,
this.onInitialized,
});
@override
@ -29,6 +31,7 @@ class VideoWidget extends StatefulWidget {
class _VideoWidgetState extends State<VideoWidget> {
final MediaController controller = Get.find<MediaController>();
late CachedVideoPlayerPlusController _controller;
late Worker _muteWorker;
bool _showControls = false;
Timer? _hideControlsTimer;
@ -36,6 +39,11 @@ class _VideoWidgetState extends State<VideoWidget> {
void initState() {
super.initState();
_initController();
_muteWorker = ever(controller.muted, (bool muted) {
if (_controller.value.isInitialized) {
_controller.setVolume(muted ? 0.0 : 1.0);
}
});
}
Future<void> _initController() async {
@ -43,6 +51,8 @@ class _VideoWidgetState extends State<VideoWidget> {
Uri.parse(widget.details.mediaUrl),
);
await _controller.initialize();
widget.onInitialized?.call();
if (!mounted) return;
setState(() {});
_controller.addListener(() => setState(() {}));
_controller.setLooping(true);
@ -67,6 +77,7 @@ class _VideoWidgetState extends State<VideoWidget> {
@override
void dispose() {
_muteWorker.dispose();
_controller.dispose();
_hideControlsTimer?.cancel();
super.dispose();
@ -87,11 +98,6 @@ class _VideoWidgetState extends State<VideoWidget> {
@override
Widget build(BuildContext context) {
final bool muted = controller.muted.value;
if (_controller.value.isInitialized &&
_controller.value.volume != (muted ? 0.0 : 1.0)) {
_controller.setVolume(muted ? 0.0 : 1.0);
}
bool isAudio = widget.details.mime.startsWith('audio');
Widget mediaContent;
@ -131,7 +137,6 @@ class _VideoWidgetState extends State<VideoWidget> {
muted: muted,
onMuteToggle: () {
controller.toggleMuted();
setState(() {});
},
),
),