mucke/lib/domain/repositories/audio_player_repository.dart

63 lines
1.9 KiB
Dart
Raw Normal View History

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,
);
/// 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);
/// 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 }