2020-07-18 11:58:03 +02:00
|
|
|
import 'package:musicus_common/musicus_common.dart';
|
2022-05-06 15:14:13 +02:00
|
|
|
import 'package:musicus_database/musicus_database.dart';
|
2020-07-18 11:58:03 +02:00
|
|
|
|
|
|
|
|
class MusicusDesktopPlayback extends MusicusPlayback {
|
2020-07-18 13:10:31 +02:00
|
|
|
@override
|
|
|
|
|
Future<void> setup() async {}
|
|
|
|
|
|
2020-07-18 11:58:03 +02:00
|
|
|
@override
|
2022-05-06 15:14:13 +02:00
|
|
|
Future<void> addTracks(List<Track> tracks) async {
|
|
|
|
|
final List<Track> newPlaylist = List.from(playlist.value);
|
2020-07-18 13:10:31 +02:00
|
|
|
newPlaylist.addAll(tracks);
|
|
|
|
|
playlist.add(newPlaylist);
|
|
|
|
|
active.add(true);
|
2020-07-18 11:58:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Future<void> playPause() async {
|
2020-07-18 13:10:31 +02:00
|
|
|
playing.add(!playing.value);
|
2020-07-18 11:58:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Future<void> removeTrack(int index) async {
|
2022-05-06 15:14:13 +02:00
|
|
|
final List<Track> tracks = List.from(playlist.value);
|
2020-07-18 13:10:31 +02:00
|
|
|
tracks.removeAt(index);
|
|
|
|
|
playlist.add(tracks);
|
2020-07-18 11:58:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Future<void> seekTo(double pos) async {
|
2020-07-18 13:10:31 +02:00
|
|
|
if (active.value && pos >= 0.0 && pos <= 1.0) {
|
|
|
|
|
final durationMs = duration.value.inMilliseconds;
|
|
|
|
|
updatePosition((pos * durationMs).floor());
|
|
|
|
|
}
|
2020-07-18 11:58:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Future<void> skipTo(int index) async {
|
2020-07-18 13:10:31 +02:00
|
|
|
updateCurrentTrack(index);
|
2020-07-18 11:58:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Future<void> skipToNext() async {
|
2020-07-18 13:10:31 +02:00
|
|
|
final index = currentIndex.value;
|
|
|
|
|
if (playlist.value.length > index + 1) {
|
|
|
|
|
updateCurrentTrack(index + 1);
|
|
|
|
|
}
|
2020-07-18 11:58:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Future<void> skipToPrevious() async {
|
2020-07-18 13:10:31 +02:00
|
|
|
final index = currentIndex.value;
|
|
|
|
|
if (index > 0) {
|
|
|
|
|
updateCurrentTrack(index - 1);
|
|
|
|
|
}
|
2020-07-18 11:58:03 +02:00
|
|
|
}
|
|
|
|
|
}
|