From a9148f7a147b42005f1a26c92d4bfd67e26fca2d Mon Sep 17 00:00:00 2001 From: rang <378694192@qq.com> Date: Fri, 24 Oct 2025 17:02:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B7=B3=E8=BF=87=E7=89=87?= =?UTF-8?q?=E5=A4=B4=E7=89=87=E5=B0=BE=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/features/player/core/audiobook_player.dart | 15 +++++++++------ lib/features/skip_start_end/skip_start_end.dart | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) 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) {