2021-02-26 22:07:18 +01:00
|
|
|
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<AudioPlayerEvent> eventStream;
|
|
|
|
|
|
|
|
ValueStream<ShuffleMode> get shuffleModeStream;
|
|
|
|
ValueStream<LoopMode> get loopModeStream;
|
2021-03-06 19:09:19 +01:00
|
|
|
ValueStream<List<Song>> get queueStream;
|
2021-02-26 22:07:18 +01:00
|
|
|
|
|
|
|
ValueStream<int> get currentIndexStream;
|
|
|
|
Stream<Song> get currentSongStream;
|
|
|
|
Stream<PlaybackEvent> get playbackEventStream;
|
|
|
|
Stream<bool> get playingStream;
|
|
|
|
Stream<Duration> get positionStream;
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract class AudioPlayerRepository extends AudioPlayerInfoRepository {
|
|
|
|
Future<void> play();
|
|
|
|
Future<void> pause();
|
|
|
|
Future<void> stop();
|
|
|
|
Future<bool> seekToNext();
|
|
|
|
Future<void> seekToPrevious();
|
2021-03-06 19:09:19 +01:00
|
|
|
Future<void> seekToIndex(int index);
|
2021-02-26 22:07:18 +01:00
|
|
|
Future<void> dispose();
|
|
|
|
|
|
|
|
Future<void> playSong(Song song);
|
2021-03-06 19:09:19 +01:00
|
|
|
Future<void> loadQueue({List<Song> queue, int initialIndex});
|
2021-02-26 22:07:18 +01:00
|
|
|
Future<void> addToQueue(Song song);
|
2021-03-06 19:09:19 +01:00
|
|
|
Future<void> playNext(Song song);
|
2021-02-26 22:07:18 +01:00
|
|
|
Future<void> moveQueueItem(int oldIndex, int newIndex);
|
|
|
|
Future<void> removeQueueIndex(int index);
|
2021-03-06 19:09:19 +01:00
|
|
|
Future<void> replaceQueueAroundIndex({List<Song> before, List<Song> after, int index});
|
2021-02-26 22:07:18 +01:00
|
|
|
|
|
|
|
/// Set the ShuffleMode. Does not affect playback/queue.
|
|
|
|
Future<void> setShuffleMode(ShuffleMode shuffleMode);
|
|
|
|
Future<void> setLoopMode(LoopMode loopMode);
|
2021-04-18 13:46:16 +02:00
|
|
|
|
|
|
|
/// Current scope: update song information in queue, don't affect playback/queue.
|
|
|
|
Future<void> updateSongs(Map<String, Song> songs);
|
2021-02-26 22:07:18 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
class AudioPlayerEvent extends Event {
|
|
|
|
AudioPlayerEventType type;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum AudioPlayerEventType { dummy }
|