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(); /// Create and load a queue from [songs] according to current AudioPlayer settings. Future loadSongs({List songs, int initialIndex}); Future addToQueue(Song song); Future playNext(Song song); Future moveQueueItem(int oldIndex, int newIndex); Future removeQueueIndex(int index); /// Set the ShuffleMode. Future setShuffleMode(ShuffleMode shuffleMode, {bool updateQueue}); Future setLoopMode(LoopMode loopMode); /// Current scope: update song information in queue, don't affect playback/queue. Future updateSongs(Map songs); } class AudioPlayerEvent extends Event { AudioPlayerEventType type; } enum AudioPlayerEventType { dummy }