diff --git a/lib/features/player/core/audiobook_player.dart b/lib/features/player/core/audiobook_player.dart index ff1df03..da29970 100644 --- a/lib/features/player/core/audiobook_player.dart +++ b/lib/features/player/core/audiobook_player.dart @@ -162,16 +162,19 @@ class AudiobookPlayer extends AudioPlayer { } AudioTrack track = _book!.tracks[index]; final appSettings = loadOrCreateAppSettings(); - if (initialPosition == null || initialPosition <= Duration()) { - initialPosition = readFromBoxOrCreate(_book!.libraryItemId).playerSettings.skipChapterStart; - } + final playerSettings = readFromBoxOrCreate(_book!.libraryItemId).playerSettings; final retrievedUri = _getUri(track, downloadedUris, baseUrl: baseUrl, token: token); await setAudioSource( - initialPosition: initialPosition, - AudioSource.uri( - retrievedUri, + initialPosition: initialPosition == null || initialPosition <= Duration() + ? playerSettings.skipChapterStart + : initialPosition, + ClippingAudioSource( + end: track.duration - playerSettings.skipChapterEnd, + child: AudioSource.uri( + retrievedUri, + ), tag: MediaItem( // Specify a unique ID for each media item: id: '${book?.libraryItemId}${track.index}', diff --git a/lib/features/skip_start_end/skip_start_end.dart b/lib/features/skip_start_end/skip_start_end.dart index 8a71461..3b130c9 100644 --- a/lib/features/skip_start_end/skip_start_end.dart +++ b/lib/features/skip_start_end/skip_start_end.dart @@ -6,13 +6,13 @@ class SkipStartEnd { final Duration start; final Duration end; final AudiobookPlayer player; - int _index; + // int _index; final List _subscriptions = []; final throttler = Throttler(delay: Duration(seconds: 3)); // final StreamController _playbackController = // StreamController.broadcast(); - SkipStartEnd({required this.start, required this.end, required this.player}) : _index = 0 { + SkipStartEnd({required this.start, required this.end, required this.player}) { // if (start > Duration()) { // _subscriptions.add( // player.currentIndexStream.listen((index) {