This commit is contained in:
@ -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(() {});
|
||||
},
|
||||
),
|
||||
),
|
||||
|
Reference in New Issue
Block a user