// ignore_for_file: deprecated_member_use import 'package:chewie/chewie.dart'; import 'package:didvan/config/theme_data.dart'; import 'package:didvan/services/network/request.dart'; import 'package:didvan/services/network/request_helper.dart'; import 'package:didvan/views/widgets/video/custome_controls.dart'; import 'package:flutter/material.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:video_player/video_player.dart'; class ChatVideoPlayer extends StatefulWidget { final String src; const ChatVideoPlayer({Key? key, required this.src}) : super(key: key); @override State createState() => _ChatVideoPlayerState(); } class _ChatVideoPlayerState extends State { late VideoPlayerController _videoPlayerController; ChewieController? _chewieController; @override void initState() { super.initState(); _handleVideoPlayback(); } Future _handleVideoPlayback() async { _videoPlayerController = VideoPlayerController.network( RequestHelper.baseUrl + widget.src, httpHeaders: {'Authorization': 'Bearer ${RequestService.token}'}); await _videoPlayerController.initialize().then((_) { setState(() { _chewieController = ChewieController( customControls: const CustomControls(), videoPlayerController: _videoPlayerController, autoPlay: false, looping: true, showOptions: false, allowPlaybackSpeedChanging: false, placeholder: const CircularProgressIndicator(), aspectRatio: 16 / 9, materialProgressColors: ChewieProgressColors( playedColor: Theme.of(context).colorScheme.title, handleColor: Theme.of(context).colorScheme.title), ); }); }).catchError((e) { setState(() {}); }); } @override void dispose() { _videoPlayerController.pause(); _videoPlayerController.dispose(); _chewieController?.dispose(); // Dispose of the ChewieController super.dispose(); } @override Widget build(BuildContext context) { return _chewieController == null ? SizedBox( child: Center( child: Padding( padding: const EdgeInsets.all(8.0), child: SpinKitThreeBounce( color: Theme.of(context).colorScheme.primary, size: 18, ), ), ), ) : AspectRatio( aspectRatio: _videoPlayerController.value.aspectRatio, child: Chewie( controller: _chewieController!, ), ); } }