From 36f14dbd58141bc9a429cb4d5626ca0872de471d Mon Sep 17 00:00:00 2001 From: rang <378694192@qq.com> Date: Wed, 10 Dec 2025 17:21:59 +0800 Subject: [PATCH] 123 --- .vscode/settings.json | 1 + lib/features/player/core/abs_audio_handler.dart | 8 +++++--- .../player/core/abs_audio_player_platform.dart | 11 +++++++++++ lib/features/skip_start_end/core/skip_start_end.dart | 8 +------- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index a389247..2c81f57 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,6 +15,7 @@ "mocktail", "nodename", "numberpicker", + "nvalue", "Prefs", "riverpod", "Schyler", diff --git a/lib/features/player/core/abs_audio_handler.dart b/lib/features/player/core/abs_audio_handler.dart index d4488ec..7e7772a 100644 --- a/lib/features/player/core/abs_audio_handler.dart +++ b/lib/features/player/core/abs_audio_handler.dart @@ -48,9 +48,11 @@ class AbsAudioHandler extends BaseAudioHandler with QueueHandler, SeekHandler { }); // 2. 转发播放位置 player.positionStream.listen((Duration position) { - playbackState.add(playbackState.value.copyWith( - updatePosition: position, - )); + playbackState.add( + playbackState.value.copyWith( + updatePosition: position, + ), + ); }); // 3. 转发媒体总时长 // player.stream.duration.listen((Duration? duration) { diff --git a/lib/features/player/core/abs_audio_player_platform.dart b/lib/features/player/core/abs_audio_player_platform.dart index 5233b4f..2c44a97 100644 --- a/lib/features/player/core/abs_audio_player_platform.dart +++ b/lib/features/player/core/abs_audio_player_platform.dart @@ -2,6 +2,7 @@ import 'package:just_audio/just_audio.dart'; import 'package:just_audio_media_kit/just_audio_media_kit.dart'; import 'package:logging/logging.dart'; import 'package:vaani/features/player/core/abs_audio_player.dart'; +import 'package:vaani/shared/extensions/chapter.dart'; final _logger = Logger('AbsPlatformAudioPlayer'); @@ -9,6 +10,13 @@ final _logger = Logger('AbsPlatformAudioPlayer'); class AbsPlatformAudioPlayer extends AbsAudioPlayer { late final AudioPlayer player; AbsPlatformAudioPlayer() { + // 跳转到播放列表指定条目指定位置 + // prefetch-playlist=yes + JustAudioMediaKit.prefetchPlaylist = true; + // merge-files=yes + // cache=yes + // cache-pause-wait=60 + JustAudioMediaKit.ensureInitialized(); player = AudioPlayer(); player.playerStateStream.listen((state) { @@ -31,6 +39,9 @@ class AbsPlatformAudioPlayer extends AbsAudioPlayer { positionInBook <= (chapter?.end ?? Duration.zero)) { final chapter = book?.findChapterAtTime(positionInBook); if (chapter != currentChapter) { + print('当前章节时长: ${currentChapter?.duration}'); + print('切换章节时长: ${chapter?.duration}'); + print('当前播放音轨时长: ${player.duration}'); chapterStreamController.add(chapter); } } diff --git a/lib/features/skip_start_end/core/skip_start_end.dart b/lib/features/skip_start_end/core/skip_start_end.dart index 3b60f84..1007774 100644 --- a/lib/features/skip_start_end/core/skip_start_end.dart +++ b/lib/features/skip_start_end/core/skip_start_end.dart @@ -20,16 +20,10 @@ class SkipStartEnd { }) { if (start > Duration.zero) { _subscriptions.add( - player.chapterStream.listen((chapter) { + player.chapterStream.listen((chapter) async { if (chapter != null && player.positionInChapter < Duration(seconds: 1)) { - // player.pause(); player.seekInBook(chapter.start + start); - // player.play(); - // Future.microtask( - // () => throttlerStart - // .call(() => player.seekInBook(chapter.start + start)), - // ); } }), );