Fixed track not changing on complete

This commit is contained in:
Kingkor Roy Tirtho 2022-07-03 13:53:38 +06:00
parent bc1334dd6d
commit 03f1d3e958
2 changed files with 9 additions and 12 deletions

View File

@ -35,7 +35,7 @@ Future<void> Function([dynamic]) useTogglePlayPause(Playback playback) {
} else if (playback.track != null && } else if (playback.track != null &&
playback.currentDuration == Duration.zero && playback.currentDuration == Duration.zero &&
await playback.player.getCurrentPosition() == Duration.zero) { await playback.player.getCurrentPosition() == Duration.zero) {
await playback.play(); await playback.play(playback.track!);
} else { } else {
await playback.togglePlayPause(); await playback.togglePlayPause();
} }

View File

@ -126,15 +126,13 @@ class Playback extends PersistedChangeNotifier {
} }
// player methods // player methods
Future<void> play([Track? track]) async { Future<void> play(Track track) async {
_logger.v("[Track Playing] ${track?.name} - ${track?.id}"); _logger.v("[Track Playing] ${track.name} - ${track.id}");
try { try {
// the track is already playing so no need to change that // the track is already playing so no need to change that
if ((track != null && track.id == this.track?.id) || if (track.id == this.track?.id) return;
(this.track == null && track == null)) return;
track ??= this.track;
final tag = MediaItem( final tag = MediaItem(
id: track!.id!, id: track.id!,
title: track.name!, title: track.name!,
album: track.album?.name, album: track.album?.name,
artist: artistsToString(track.artists ?? <ArtistSimple>[]), artist: artistsToString(track.artists ?? <ArtistSimple>[]),
@ -147,11 +145,10 @@ class Playback extends PersistedChangeNotifier {
track = await toSpotubeTrack(track); track = await toSpotubeTrack(track);
} }
_logger.v("[Track Direct Source] - ${(track).ytUri}"); _logger.v("[Track Direct Source] - ${(track).ytUri}");
await player.play(UrlSource(track.ytUri)).then((_) { this.track = track;
this.track = track as SpotubeTrack; notifyListeners();
notifyListeners(); updatePersistence();
updatePersistence(); await player.play(UrlSource(track.ytUri));
});
} catch (e, stack) { } catch (e, stack) {
_logger.e("play", e, stack); _logger.e("play", e, stack);
} }