import 'package:rxdart/rxdart.dart'; import '../entities/event.dart'; import '../entities/loop_mode.dart'; import '../entities/playback_event.dart'; import '../entities/shuffle_mode.dart'; import '../entities/song.dart'; abstract class AudioPlayerInfoRepository { Stream eventStream; ValueStream get shuffleModeStream; ValueStream get loopModeStream; ValueStream> get queueStream; ValueStream get currentIndexStream; Stream get currentSongStream; Stream get playbackEventStream; Stream get playingStream; Stream get positionStream; } abstract class AudioPlayerRepository extends AudioPlayerInfoRepository { Future play(); Future pause(); Future stop(); Future seekToNext(); Future seekToPrevious(); Future seekToIndex(int index); Future dispose(); Future playSong(Song song); Future loadQueue({List queue, int initialIndex}); Future addToQueue(Song song); Future playNext(Song song); Future moveQueueItem(int oldIndex, int newIndex); Future removeQueueIndex(int index); Future replaceQueueAroundIndex({List before, List after, int index}); /// Set the ShuffleMode. Does not affect playback/queue. Future setShuffleMode(ShuffleMode shuffleMode); Future setLoopMode(LoopMode loopMode); } class AudioPlayerEvent extends Event { AudioPlayerEventType type; } enum AudioPlayerEventType { dummy }