initialize method
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();
}
}
}