From 2619787c8d2580b872f0eafe4cd0ed184f80b55a Mon Sep 17 00:00:00 2001 From: stonega Date: Sat, 2 Jan 2021 22:53:16 +0800 Subject: [PATCH] Fix playlist init error. --- lib/state/audio_state.dart | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/state/audio_state.dart b/lib/state/audio_state.dart index fdb8ae6..dd2045e 100644 --- a/lib/state/audio_state.dart +++ b/lib/state/audio_state.dart @@ -278,20 +278,22 @@ class AudioPlayerNotifier extends ChangeNotifier { if (state[1] != '') { var episode = await _dbHelper.getRssItemWithUrl(state[1]); if ((!_playlist.isQueue && _playlist.contains(episode)) || - (_playlist.isQueue && _queue.episodes.first == episode)) { + (_playlist.isQueue && + _queue.isNotEmpty && + _queue.episodes.first == episode)) { _episode = episode; _lastPosition = int.parse(state[2] ?? '0'); } else { - _episode = _playlist.episodes.first; + _episode = _playlist.isNotEmpty ? _playlist.episodes.first : null; _lastPosition = 0; } } else { - _episode = _playlist.episodes.first; + _episode = _playlist.isNotEmpty ? _playlist.episodes.first : null; _lastPosition = 0; } } else { _playlist = _playlists.first; - _episode = _playlist.episodes.first; + _episode = _playlist.isNotEmpty ? _playlist.episodes?.first : null; _lastPosition = 0; } notifyListeners(); @@ -311,8 +313,9 @@ class AudioPlayerNotifier extends ChangeNotifier { Future playFromLastPosition() async { if (_playlist.episodes.isNotEmpty) { await _playlist.getPlaylist(); - if (_episode == null || !_playlist.episodes.contains(_episode)) - _episode = _playlist.episodes.first; + if (_episode == null || !_playlist.episodes.contains(_episode)) { + _episode = _playlist.isNotEmpty ? _playlist.episodes.first : null; + } _audioState = AudioProcessingState.none; _backgroundAudioDuration = 0; _backgroundAudioPosition = 0; @@ -332,7 +335,7 @@ class AudioPlayerNotifier extends ChangeNotifier { } _playlist = p; notifyListeners(); - if (playlist.episodeList.isNotEmpty) { + if (playlist.isNotEmpty) { if (playerRunning) { AudioService.customAction('setIsQueue', playlist.name == 'Queue'); AudioService.customAction('changeQueue', @@ -716,7 +719,7 @@ class AudioPlayerNotifier extends ChangeNotifier { ]; if (_playlist == playlist && !_playerRunning) { _playlist = _queue; - _episode = _queue.episodes.first; + _episode = _playlist.isNotEmpty ? _queue.episodes.first : null; } notifyListeners(); _savePlaylists(); @@ -764,8 +767,10 @@ class AudioPlayerNotifier extends ChangeNotifier { delFromPlaylist(e); } } - } else + } else { playlist.clear(); + if (_playlist.isQueue) _episode = null; + } updatePlaylist(playlist, updateEpisodes: false); } @@ -943,9 +948,6 @@ class AudioPlayerNotifier extends ChangeNotifier { notifyListeners(); } } - - /// Save player state. - Future _savePlayerPosiont() {} } class AudioPlayerTask extends BackgroundAudioTask {