From 3923ba8bd6d0645b695af14fdd08954319bdcc91 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 18 Jun 2025 15:33:44 -0400 Subject: [PATCH] chore: fix playing icon in phonestic transcription widget --- .../toolbar/controllers/tts_controller.dart | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/pangea/toolbar/controllers/tts_controller.dart b/lib/pangea/toolbar/controllers/tts_controller.dart index 32e575ae1..80ae1a080 100644 --- a/lib/pangea/toolbar/controllers/tts_controller.dart +++ b/lib/pangea/toolbar/controllers/tts_controller.dart @@ -35,7 +35,7 @@ class TtsController { static final StreamController loadingChoreoStream = StreamController.broadcast(); - static final audioPlayer = AudioPlayer(); + static AudioPlayer? audioPlayer; static bool get _useAlternativeTTS { return PlatformInfos.isWindows; @@ -122,7 +122,7 @@ class TtsController { // https://pub.dev/packages/flutter_tts final result = await (_useAlternativeTTS ? _alternativeTTS.stop() : _tts.stop()); - audioPlayer.stop(); + audioPlayer?.stop(); if (!_useAlternativeTTS && result != 1) { ErrorHandler.logError( @@ -173,8 +173,6 @@ class TtsController { onStart: onStart, onStop: onStop, ); - - onStop?.call(); } /// A safer version of speak, that handles the case of @@ -314,13 +312,15 @@ class TtsController { try { Logs().i('Speaking from choreo: $text, langCode: $langCode'); final audioContent = base64Decode(ttsRes.audioContent); - await audioPlayer.setAudioSource( + audioPlayer?.dispose(); + audioPlayer = AudioPlayer(); + await audioPlayer!.setAudioSource( BytesAudioSource( audioContent, ttsRes.mimeType, ), ); - await audioPlayer.play(); + await audioPlayer!.play(); } catch (e, s) { ErrorHandler.logError( e: 'Error playing audio', @@ -330,6 +330,9 @@ class TtsController { 'text': text, }, ); + } finally { + audioPlayer?.dispose(); + audioPlayer = null; } }