import 'package:musicus_common/musicus_common.dart'; import 'package:musicus_database/musicus_database.dart'; class MusicusDesktopPlayback extends MusicusPlayback { @override Future setup() async {} @override Future addTracks(List tracks) async { final List newPlaylist = List.from(playlist.value); newPlaylist.addAll(tracks); playlist.add(newPlaylist); active.add(true); } @override Future playPause() async { playing.add(!playing.value); } @override Future removeTrack(int index) async { final List tracks = List.from(playlist.value); tracks.removeAt(index); playlist.add(tracks); } @override Future seekTo(double pos) async { if (active.value && pos >= 0.0 && pos <= 1.0) { final durationMs = duration.value.inMilliseconds; updatePosition((pos * durationMs).floor()); } } @override Future skipTo(int index) async { updateCurrentTrack(index); } @override Future skipToNext() async { final index = currentIndex.value; if (playlist.value.length > index + 1) { updateCurrentTrack(index + 1); } } @override Future skipToPrevious() async { final index = currentIndex.value; if (index > 0) { updateCurrentTrack(index - 1); } } }