From 42b59e32763e349f860537389b79ea320a232b63 Mon Sep 17 00:00:00 2001 From: Chaphasilor Date: Mon, 11 Mar 2024 16:13:24 +0100 Subject: [PATCH 1/2] fix playback stopping after each track --- lib/mediakit_player.dart | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/mediakit_player.dart b/lib/mediakit_player.dart index 5089de2..225b8c7 100644 --- a/lib/mediakit_player.dart +++ b/lib/mediakit_player.dart @@ -60,9 +60,10 @@ class MediaKitPlayer extends AudioPlayerPlatform { _dataController.add(PlayerDataMessage(volume: volume / 100.0)); }), _player.stream.completed.listen((completed) { - _processingState = completed - ? ProcessingStateMessage.completed - : ProcessingStateMessage.ready; + // _processingState = completed + // ? ProcessingStateMessage.completed + // : ProcessingStateMessage.ready; + _processingState = ProcessingStateMessage.ready; _updatePlaybackEvent(); }), _player.stream.error.listen((error) { From cbae0008fe90998f7127618efb368d9e5b05b4a1 Mon Sep 17 00:00:00 2001 From: Chaphasilor Date: Wed, 13 Mar 2024 10:19:30 +0100 Subject: [PATCH 2/2] improve ProcessingState.completed detection --- lib/mediakit_player.dart | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/mediakit_player.dart b/lib/mediakit_player.dart index 225b8c7..af7824b 100644 --- a/lib/mediakit_player.dart +++ b/lib/mediakit_player.dart @@ -20,6 +20,8 @@ class MediaKitPlayer extends AudioPlayerPlatform { ProcessingStateMessage _processingState = ProcessingStateMessage.idle; Duration _bufferedPosition = Duration.zero; Duration _position = Duration.zero; + Playlist _currentPlaylist = Playlist([]); + PlaylistMode _currentPlaylistMode = PlaylistMode.none; int _currentIndex = 0; MediaKitPlayer(super.id) { @@ -60,10 +62,13 @@ class MediaKitPlayer extends AudioPlayerPlatform { _dataController.add(PlayerDataMessage(volume: volume / 100.0)); }), _player.stream.completed.listen((completed) { - // _processingState = completed - // ? ProcessingStateMessage.completed - // : ProcessingStateMessage.ready; - _processingState = ProcessingStateMessage.ready; + if (completed && + _currentIndex == _currentPlaylist.medias.length - 1 && + _currentPlaylistMode == PlaylistMode.none) { + _processingState = ProcessingStateMessage.completed; + } else { + _processingState = ProcessingStateMessage.ready; + } _updatePlaybackEvent(); }), _player.stream.error.listen((error) { @@ -72,9 +77,14 @@ class MediaKitPlayer extends AudioPlayerPlatform { _logger.severe('ERROR OCCURRED: $error'); }), _player.stream.playlist.listen((playlist) { + _currentPlaylist = playlist; _currentIndex = playlist.index; _updatePlaybackEvent(); }), + _player.stream.playlistMode.listen((playlistMode) { + _currentPlaylistMode = playlistMode; + _updatePlaybackEvent(); + }), _player.stream.pitch.listen((pitch) { _dataController.add(PlayerDataMessage(pitch: pitch)); }),