Files
plezy/lib/screens/video_player/parts/seeking.dart
T

30 lines
1.1 KiB
Dart

part of '../../video_player_screen.dart';
extension _VideoPlayerSeekingMethods on VideoPlayerScreenState {
Future<void> _seekPlayback(Duration position) async {
final currentPlayer = player;
if (!mounted || currentPlayer == null) return;
final target = clampSeekPosition(currentPlayer, position);
// Parked on a dead stream (#1520): a native seek would land inside the
// drained cache — rebuild the stream at the target instead.
if (_spuriousEofRecoveryParked && !widget.isLive && _playbackTransition == _PlaybackTransition.idle) {
await _retrySpuriousEofRecovery(reason: 'seek', resumePosition: target);
return;
}
await currentPlayer.seek(target);
}
/// Relative seek shared by the companion remote and the OS media-control
/// skip commands, including the live-TV capture-buffer branch.
Future<void> _seekRelative(Duration delta) async {
final currentPlayer = player;
if (currentPlayer == null) return;
if (widget.isLive && _live.captureBuffer != null) {
_liveSeek.seekBy(delta.inSeconds);
return;
}
await _seekPlayback(currentPlayer.state.position + delta);
}
}