musicus_mobile/desktop/lib/playback.dart

56 lines
1.3 KiB
Dart
Raw Normal View History

2020-07-18 11:58:03 +02:00
import 'package:musicus_common/musicus_common.dart';
class MusicusDesktopPlayback extends MusicusPlayback {
2020-07-18 13:10:31 +02:00
@override
2022-05-07 19:06:09 +02:00
Future<void> setup(MusicusLibrary library) async {}
2020-07-18 13:10:31 +02:00
2020-07-18 11:58:03 +02:00
@override
2022-05-07 19:06:09 +02:00
Future<void> addTracks(List<String> tracks) async {
final List<String> 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-07 19:06:09 +02:00
final List<String> 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;
2022-05-07 19:06:09 +02:00
updatePosition(Duration(milliseconds: (pos * durationMs).floor()));
2020-07-18 13:10:31 +02:00
}
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
}
}