mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 16:05:18 +00:00
feat: pause track when seeking forward/back and keep audio session alive when paused/interrupted
This commit is contained in:
parent
3ed8b0fda2
commit
bc8a04e544
@ -202,6 +202,7 @@ class Playback extends PersistedChangeNotifier {
|
||||
if (index < 0 || index > playlist.tracks.length - 1) return;
|
||||
if (isPlaying || status == PlaybackStatus.playing) await stop();
|
||||
this.playlist = playlist;
|
||||
mobileAudioService?.session?.setActive(true);
|
||||
final played = this.playlist!.tracks[index];
|
||||
status = PlaybackStatus.loading;
|
||||
notifyListeners();
|
||||
@ -320,6 +321,7 @@ class Playback extends PersistedChangeNotifier {
|
||||
}
|
||||
|
||||
Future<void> stop() async {
|
||||
mobileAudioService?.session?.setActive(false);
|
||||
await player.stop();
|
||||
await player.release();
|
||||
isPlaying = false;
|
||||
@ -634,6 +636,7 @@ class Playback extends PersistedChangeNotifier {
|
||||
(playlist!.trackIds.indexOf(track!.id!) + 1).toInt();
|
||||
// checking if there's any track available forward
|
||||
if (nextTrackIndex > (playlist?.tracks.length ?? 0) - 1) return;
|
||||
await pause();
|
||||
await play(playlist!.tracks.elementAt(nextTrackIndex)).then((_) {
|
||||
playlist!.tracks[nextTrackIndex] = track!;
|
||||
});
|
||||
@ -645,6 +648,7 @@ class Playback extends PersistedChangeNotifier {
|
||||
(playlist!.trackIds.indexOf(track!.id!) - 1).toInt();
|
||||
// checking if there's any track available behind
|
||||
if (prevTrackIndex < 0) return;
|
||||
await pause();
|
||||
await play(playlist!.tracks.elementAt(prevTrackIndex)).then((_) {
|
||||
playlist!.tracks[prevTrackIndex] = track!;
|
||||
});
|
||||
|
@ -18,18 +18,18 @@ class MobileAudioService extends BaseAudioHandler {
|
||||
}
|
||||
});
|
||||
});
|
||||
final _player = playback.player;
|
||||
_player.onPlayerStateChanged.listen((state) async {
|
||||
final player = playback.player;
|
||||
player.onPlayerStateChanged.listen((state) async {
|
||||
if (state != PlayerState.completed) {
|
||||
playbackState.add(await _transformEvent());
|
||||
}
|
||||
});
|
||||
|
||||
_player.onPositionChanged.listen((pos) async {
|
||||
player.onPositionChanged.listen((pos) async {
|
||||
playbackState.add(await _transformEvent());
|
||||
});
|
||||
|
||||
_player.onPlayerComplete.listen((_) {
|
||||
player.onPlayerComplete.listen((_) {
|
||||
if (playback.playlist == null && playback.track == null) {
|
||||
playbackState.add(
|
||||
PlaybackState(
|
||||
@ -56,7 +56,6 @@ class MobileAudioService extends BaseAudioHandler {
|
||||
|
||||
@override
|
||||
Future<void> stop() async {
|
||||
await session?.setActive(true);
|
||||
await playback.stop();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user