From 290b68336f020d8dfa65ae8ca78cba1010767271 Mon Sep 17 00:00:00 2001 From: rang <378694192@qq.com> Date: Sun, 7 Dec 2025 23:03:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E5=8F=96abs=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E5=99=A8=E6=8A=BD=E8=B1=A1=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/shared/audio_player.dart | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 lib/shared/audio_player.dart diff --git a/lib/shared/audio_player.dart b/lib/shared/audio_player.dart new file mode 100644 index 0000000..b2ef502 --- /dev/null +++ b/lib/shared/audio_player.dart @@ -0,0 +1,41 @@ +import 'package:shelfsdk/audiobookshelf_api.dart'; +import 'package:vaani/features/player/core/audiobook_player.dart'; + +abstract class AbsAudioPlayer { + AbsAudioPlayer._(); + + BookExpanded? _book; + + BookExpanded? get book => _book; + + Future play(); + Future pause(); + Future playOrPause(); + Future next(); + Future previous(); + Future seek(Duration position, {int? index}); + Future seekInBook(Duration position); + Future setSpeed(double speed); + Future setVolume(double volume); + Future switchChapter(int chapterId); + + int get currentIndex; + + Duration get position; + + Duration get positionInChapter { + final globalPosition = positionInBook; + return globalPosition - + (book?.findChapterAtTime(globalPosition).start ?? Duration.zero); + } + + Duration get positionInBook => + position + (book?.tracks[currentIndex].startOffset ?? Duration.zero); + + Stream get positionStream; + + Stream get positionInChapterStream; + + Stream get positionInBookStream; + Stream get bufferedPositionInBookStream; +}