diff --git a/lib/pages/chat/events/audio_player.dart b/lib/pages/chat/events/audio_player.dart index 9a82dce86..ff0afc53a 100644 --- a/lib/pages/chat/events/audio_player.dart +++ b/lib/pages/chat/events/audio_player.dart @@ -79,6 +79,7 @@ class AudioPlayerState extends State { // #Pangea StreamSubscription? _onAudioPositionChanged; + StreamSubscription? _onAudioStateChanged; // Pangea# @override @@ -164,6 +165,7 @@ class AudioPlayerState extends State { matrix.voiceMessageEventId.value = matrix.audioPlayer = null; // #Pangea _onAudioPositionChanged?.cancel(); + _onAudioStateChanged?.cancel(); // Pangea# } } @@ -251,7 +253,6 @@ class AudioPlayerState extends State { // #Pangea // if (matrix.voiceMessageEventId.value != widget.event.eventId) return; if (matrix.voiceMessageEventId.value != widget.eventId) return; - matrix.audioPlayer?.dispose(); // Pangea# @@ -269,6 +270,15 @@ class AudioPlayerState extends State { ); } }); + + _onAudioStateChanged?.cancel(); + _onAudioStateChanged = + matrix.audioPlayer!.playerStateStream.listen((state) { + if (state.processingState == ProcessingState.completed) { + matrix.audioPlayer!.stop(); + matrix.audioPlayer!.seek(Duration.zero); + } + }); // Pangea# // #Pangea