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';
|
2021-05-16 18:04:35 +02:00
|
|
|
import '../entities/queue_item.dart';
|
2021-02-26 22:07:18 +01:00
|
|
|
import '../entities/shuffle_mode.dart';
|
|
|
|
import '../entities/song.dart';
|
2021-05-16 18:04:35 +02:00
|
|
|
import '../modules/managed_queue.dart';
|
2021-02-26 22:07:18 +01:00
|
|
|
|
|
|
|
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;
|
2021-05-16 18:04:35 +02:00
|
|
|
|
|
|
|
ManagedQueueInfo get managedQueueInfo;
|
2021-02-26 22:07:18 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
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();
|
|
|
|
|
2021-05-16 18:04:35 +02:00
|
|
|
Future<void> initQueue(
|
|
|
|
List<QueueItem> queueItems,
|
|
|
|
List<Song> originalSongs,
|
|
|
|
List<Song> addedSongs,
|
|
|
|
int index,
|
|
|
|
);
|
|
|
|
|
2021-05-15 22:59:50 +02:00
|
|
|
/// Create and load a queue from [songs] according to current AudioPlayer settings.
|
|
|
|
Future<void> loadSongs({List<Song> songs, 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-05-15 22:59:50 +02:00
|
|
|
/// Set the ShuffleMode.
|
|
|
|
Future<void> setShuffleMode(ShuffleMode shuffleMode, {bool updateQueue});
|
2021-02-26 22:07:18 +01:00
|
|
|
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 }
|