initialize method

Future<void> initialize()

Initialize the controller.

Implementation

Future<void> initialize() async {
  if (value.status.isLoading || value.status.isSuccess) {
    return;
  }

  value = value.copyWith(status: VideoInitStatus.loading);

  /// This is the process of video initialization to obtain the relevant
  /// status.
  try {
    await videoPlayerController.initialize();
    value = value.copyWith(
      status: videoPlayerController.value.isInitialized
          ? VideoInitStatus.success
          : VideoInitStatus.fail,
      duration: videoPlayerController.value.duration,
    );
  } catch (e) {
    value = value.copyWith(status: VideoInitStatus.fail);
  }

  if (value.status.isFail) {
    isFirstInit ? isFirstInit = false : await initialize();
  }

  if (value.status.isSuccess) {
    isFirstInit = false;

    /// Update [VideoPlayerValue].
    ///
    /// After initialization, obtain the aspect ratio and the direction of
    /// video in full screen mode.
    value = value.copyWith(
      videoPlayerValue: videoPlayerController.value,
      aspectRatio:
          config.aspectRatio ?? videoPlayerController.value.aspectRatio,
    );

    _startHideTimer();

    if (config.autoPlay) {
      await play();
    }
  }
}