From e44144b229a79ce919f415482565decb31185d71 Mon Sep 17 00:00:00 2001 From: rang <378694192@qq.com> Date: Fri, 24 Oct 2025 15:42:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=92=AD=E6=94=BE=E5=99=A8=E9=87=8D=E5=86=99?= =?UTF-8?q?=E7=9A=84stream=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/features/player/core/audiobook_player.dart | 8 +++----- .../player/providers/currently_playing_provider.dart | 2 +- .../player/providers/currently_playing_provider.g.dart | 2 +- lib/features/player/view/audiobook_player.dart | 4 ++-- lib/features/player/view/player_when_minimized.dart | 2 +- lib/features/skip_start_end/skip_start_end.dart | 9 ++++++--- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lib/features/player/core/audiobook_player.dart b/lib/features/player/core/audiobook_player.dart index 56f21da..08bdf6f 100644 --- a/lib/features/player/core/audiobook_player.dart +++ b/lib/features/player/core/audiobook_player.dart @@ -271,8 +271,7 @@ class AudiobookPlayer extends AudioPlayer { // - positionStream // - bufferedPositionStream - @override - Stream get positionStream { + Stream get positionStreamInBook { // return the positionInBook stream return super.positionStream.map((position) { if (_book == null) { @@ -282,8 +281,7 @@ class AudiobookPlayer extends AudioPlayer { }); } - @override - Stream get bufferedPositionStream { + Stream get bufferedPositionStreamInBook { return super.bufferedPositionStream.map((position) { if (_book == null) { return Duration.zero; @@ -293,7 +291,7 @@ class AudiobookPlayer extends AudioPlayer { } /// a convenience getter for slow position stream - Stream get slowPositionStream { + Stream get slowPositionStreamInBook { final superPositionStream = createPositionStream( steps: 100, minPeriod: const Duration(milliseconds: 500), diff --git a/lib/features/player/providers/currently_playing_provider.dart b/lib/features/player/providers/currently_playing_provider.dart index e8b8af9..a9beabd 100644 --- a/lib/features/player/providers/currently_playing_provider.dart +++ b/lib/features/player/providers/currently_playing_provider.dart @@ -24,7 +24,7 @@ BookExpanded? currentlyPlayingBook(Ref ref) { @riverpod BookChapter? currentPlayingChapter(Ref ref) { final player = ref.watch(audiobookPlayerProvider); - player.slowPositionStream.listen((_) { + player.slowPositionStreamInBook.listen((_) { ref.invalidateSelf(); }); diff --git a/lib/features/player/providers/currently_playing_provider.g.dart b/lib/features/player/providers/currently_playing_provider.g.dart index 428aa0b..ace77bb 100644 --- a/lib/features/player/providers/currently_playing_provider.g.dart +++ b/lib/features/player/providers/currently_playing_provider.g.dart @@ -26,7 +26,7 @@ final currentlyPlayingBookProvider = // ignore: unused_element typedef CurrentlyPlayingBookRef = AutoDisposeProviderRef; String _$currentPlayingChapterHash() => - r'73db8b8a9058573bb0c68ec5d5f8aba9306f3d24'; + r'4a64157089279c71279ccfdbcfc7b32543ecc88c'; /// provided the current chapter of the book being played /// diff --git a/lib/features/player/view/audiobook_player.dart b/lib/features/player/view/audiobook_player.dart index e260f28..b87858f 100644 --- a/lib/features/player/view/audiobook_player.dart +++ b/lib/features/player/view/audiobook_player.dart @@ -197,11 +197,11 @@ class AudiobookChapterProgressBar extends HookConsumerWidget { final player = ref.watch(audiobookPlayerProvider); final currentChapter = ref.watch(currentPlayingChapterProvider); final position = useStream( - player.positionStream, + player.positionStreamInBook, initialData: const Duration(seconds: 0), ); final buffered = useStream( - player.bufferedPositionStream, + player.bufferedPositionStreamInBook, initialData: const Duration(seconds: 0), ); diff --git a/lib/features/player/view/player_when_minimized.dart b/lib/features/player/view/player_when_minimized.dart index f9c62c1..6bfb236 100644 --- a/lib/features/player/view/player_when_minimized.dart +++ b/lib/features/player/view/player_when_minimized.dart @@ -34,7 +34,7 @@ class PlayerWhenMinimized extends HookConsumerWidget { final currentChapter = ref.watch(currentPlayingChapterProvider); final vanishingPercentage = 1 - percentageMiniplayer; - final progress = useStream(player.slowPositionStream, initialData: Duration.zero); + final progress = useStream(player.slowPositionStreamInBook, initialData: Duration.zero); final bookMetaExpanded = ref.watch(currentBookMetadataProvider); diff --git a/lib/features/skip_start_end/skip_start_end.dart b/lib/features/skip_start_end/skip_start_end.dart index e109357..d8eeb2c 100644 --- a/lib/features/skip_start_end/skip_start_end.dart +++ b/lib/features/skip_start_end/skip_start_end.dart @@ -17,10 +17,10 @@ class SkipStartEnd { _subscriptions.add( player.currentIndexStream.listen((index) { if (_index != index && player.position.inMilliseconds < 500) { - _index = index!; Future.microtask(() { player.seek(start); }); + _index = index!; } }), ); @@ -31,8 +31,11 @@ class SkipStartEnd { if (player.duration != null && player.duration!.inMilliseconds - player.position.inMilliseconds < end.inMilliseconds) { - Future.microtask(() { - throttler.call(player.seekForward); + throttler.call(() { + print('跳过片尾'); + Future.microtask(() { + throttler.call(player.seekToNext); + }); }); } }),