restart method

Future<void> restart()

发生错误, 重新播放

Implementation

Future<void> restart() async {
  if (_dispose) {
    return;
  }

  if (value.videoPlayerController != null && value.videoPlayerController!.value.hasError) {
    _playerEventStreamController.sink.add(BetterVideoPlayerEvent(value.playerKey, BetterVideoPlayerEventType.onRestart));

    // remove error
    value.videoPlayerController!.value = VideoPlayerValue(
      duration: value.videoPlayerController!.value.duration,
      size: value.videoPlayerController!.value.size,
      position: value.videoPlayerController!.value.position,
      caption: value.videoPlayerController!.value.caption,
      buffered: value.videoPlayerController!.value.buffered,
      isPlaying: value.videoPlayerController!.value.isPlaying,
      isLooping: value.videoPlayerController!.value.isLooping,
      isBuffering: value.videoPlayerController!.value.isBuffering,
      volume: value.videoPlayerController!.value.volume,
      playbackSpeed: value.videoPlayerController!.value.playbackSpeed,
      errorDescription: null,
    );

    // auto play
    value = value.copyWith(configuration: value.configuration.copyWith(autoPlay: true));

    try {
      await value.videoPlayerController!.initialize();
    } catch (e) {
      value.videoPlayerController!.value = value.videoPlayerController!.value.copyWith(errorDescription: e.toString());
    }

    if (value.videoPlayerController!.value.hasError) {
      return;
    }

    start();
  }
}