From fbda24eff6865b42d7e0ce231c2e24f686d99f09 Mon Sep 17 00:00:00 2001 From: Seungsoo Lee Date: Sat, 3 Oct 2026 04:30:12 +0900 Subject: [PATCH] [flutter_tts] Add clearVoice flutter_tts calls clearVoice to reset the voice chosen by setVoice, but the Tizen plugin had no handler for it, so the call failed with MissingPluginException. Reset the voice type to TTS_VOICE_TYPE_AUTO so the engine picks the voice again (like iOS clearing its selected voice), and return 1 like Android and iOS. Upstream: flutter_tts 4.0.0 "Add clear selected voice" (Android/iOS) https://github.com/dlutton/flutter_tts/blob/master/CHANGELOG.md#400 --- packages/flutter_tts/CHANGELOG.md | 3 ++- packages/flutter_tts/README.md | 3 ++- .../example/integration_test/flutter_tts_test.dart | 4 ++++ packages/flutter_tts/pubspec.yaml | 2 +- packages/flutter_tts/tizen/src/flutter_tts_tizen_plugin.cc | 7 +++++++ packages/flutter_tts/tizen/src/text_to_speech.h | 2 ++ 6 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/flutter_tts/CHANGELOG.md b/packages/flutter_tts/CHANGELOG.md index 78440be36..90d7b945d 100644 --- a/packages/flutter_tts/CHANGELOG.md +++ b/packages/flutter_tts/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 1.8.0 +* Add `clearVoice`. * Follow the analysis options of the frontend plugin. * Apply clang-format-16 formatting. diff --git a/packages/flutter_tts/README.md b/packages/flutter_tts/README.md index de5365d89..a686e793e 100644 --- a/packages/flutter_tts/README.md +++ b/packages/flutter_tts/README.md @@ -11,7 +11,7 @@ This package is not an _endorsed_ implementation of `flutter_tts`. Therefore, yo ```yaml dependencies: flutter_tts: ^4.2.5 - flutter_tts_tizen: ^1.7.1 + flutter_tts_tizen: ^1.8.0 ``` Then you can import `flutter_tts` in your Dart code: @@ -34,6 +34,7 @@ The features supported by Tizen are as follows. Other features are not supported - [x] is language available - [x] get voices - [x] set voice + - [x] clear voice - [x] set speech rate - [x] set speech volume (requires privilege `http://tizen.org/privilege/volume.set` in `tizen_manifest.xml`) - [x] get default voice diff --git a/packages/flutter_tts/example/integration_test/flutter_tts_test.dart b/packages/flutter_tts/example/integration_test/flutter_tts_test.dart index 0518a9a27..965787abf 100644 --- a/packages/flutter_tts/example/integration_test/flutter_tts_test.dart +++ b/packages/flutter_tts/example/integration_test/flutter_tts_test.dart @@ -67,6 +67,10 @@ void main() { ); }); + test('clearVoice returns 1', () async { + expect(await flutterTts.clearVoice(), 1); + }); + test('setSpeechRate returns 1', () async { expect(await flutterTts.setSpeechRate(0.5), 1); }); diff --git a/packages/flutter_tts/pubspec.yaml b/packages/flutter_tts/pubspec.yaml index b2e3a8bb1..6a3ee6bad 100644 --- a/packages/flutter_tts/pubspec.yaml +++ b/packages/flutter_tts/pubspec.yaml @@ -2,7 +2,7 @@ name: flutter_tts_tizen description: The Tizen implementation of flutter_tts plugin. homepage: https://github.com/flutter-tizen/plugins repository: https://github.com/flutter-tizen/plugins/tree/main/packages/flutter_tts -version: 1.7.1 +version: 1.8.0 environment: sdk: ">=3.1.0 <4.0.0" diff --git a/packages/flutter_tts/tizen/src/flutter_tts_tizen_plugin.cc b/packages/flutter_tts/tizen/src/flutter_tts_tizen_plugin.cc index af1c50084..73bfdcb2d 100644 --- a/packages/flutter_tts/tizen/src/flutter_tts_tizen_plugin.cc +++ b/packages/flutter_tts/tizen/src/flutter_tts_tizen_plugin.cc @@ -128,6 +128,8 @@ class FlutterTtsTizenPlugin : public flutter::Plugin { OnGetDefaultVoice(); } else if (method_name == "setVoice") { OnSetVoice(arguments); + } else if (method_name == "clearVoice") { + OnClearVoice(); } else if (method_name == "getVoices") { OnGetVoices(); } else if (method_name == "getMaxSpeechInputLength") { @@ -262,6 +264,11 @@ class FlutterTtsTizenPlugin : public flutter::Plugin { SendResult(flutter::EncodableValue(0)); } + void OnClearVoice() { + tts_->ClearDefaultVoiceType(); + SendResult(flutter::EncodableValue(1)); + } + void OnGetVoices() { flutter::EncodableList list; for (auto voice : tts_->GetSupportedVoiceTypes()) { diff --git a/packages/flutter_tts/tizen/src/text_to_speech.h b/packages/flutter_tts/tizen/src/text_to_speech.h index 209b4b96a..50f5f8cbf 100644 --- a/packages/flutter_tts/tizen/src/text_to_speech.h +++ b/packages/flutter_tts/tizen/src/text_to_speech.h @@ -59,6 +59,8 @@ class TextToSpeech { void SetDefaultVoiceType(const std::string &voice); + void ClearDefaultVoiceType() { default_voice_type_ = TTS_VOICE_TYPE_AUTO; } + std::optional GetMaxSpeechInputLength(); std::optional GetState();