seekTo method

Future<void> seekTo(
  1. Duration? position
)

Sets the video's current timestamp to be at moment. The next time the video is played it will resume from the given moment.

If moment is outside of the video's full range it will be automatically and silently clamped.

Implementation

Future<void> seekTo(Duration? position) async {
  _timer?.cancel();
  bool isPlaying = value.isPlaying;
  final int positionInMs = value.position.inMilliseconds;
  final int durationInMs = value.duration?.inMilliseconds ?? 0;

  if (positionInMs >= durationInMs && position?.inMilliseconds == 0) {
    isPlaying = true;
  }
  if (_isDisposed) {
    return;
  }

  Duration? positionToSeek = position;
  if (position! > value.duration!) {
    positionToSeek = value.duration;
  } else if (position < const Duration()) {
    positionToSeek = const Duration();
  }
  _seekPosition = positionToSeek;

  await _videoPlayerPlatform.seekTo(_textureId, positionToSeek);
  _updatePosition(position);

  if (isPlaying) {
    play();
  } else {
    pause();
  }
}