initVideoPlayer method

Future<void> initVideoPlayer({
  1. required String link,
  2. int? quality,
  3. List<VideoQuality>? videoQualities,
  4. Duration? seekPosition,
})

Implementation

Future<void> initVideoPlayer({required String link,int? quality,
  List<VideoQuality>? videoQualities, Duration? seekPosition}) async {

  enableWakeLock();
  emit(VideoLoading());
  try {
    _controller?.dispose();
  } catch (e) {

  }
  _controller = VideoPlayerController.networkUrl(Uri.parse(
      link))
    ..initialize().then((_) {
      if(!isClosed) {
        _controller!.play();
        if(seekPosition!=null){
          _controller!.seekTo(seekPosition);
        }
        _showControls=false;
        emit(VideoInitialized(videoPlayerController: _controller!,
            showControls: _showControls,videoQualities: videoQualities,currentQuality: quality));
      }
    },onError: (_){
      if(!isClosed){
        emit(VideoError(link));
      }
    });
  _controller!.addListener(() async {
    if(_controller!.value.isPlaying && _showControls && !_isControlChecking){
      _isControlChecking=true;
      await Future.delayed(const Duration(seconds: 3));
      _isControlChecking=false;
      if(_controller!.value.isPlaying && _showControls && !isClosed){
        _showControls=!_showControls;
        emit(VideoInitialized(videoPlayerController: _controller!,
            showControls: _showControls,videoQualities: [],currentQuality: quality));
      }
    }
  });
  }