Skip to content

Commit fb4a7e7

Browse files
authored
[flutter_tts] Update flutter_tts to 4.2.5 (#984)
1 parent 3f26221 commit fb4a7e7

7 files changed

Lines changed: 41 additions & 10 deletions

File tree

packages/flutter_tts/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 1.6.0
2+
3+
* Update flutter_tts 4.2.0 to 4.2.5.
4+
* Invoke `speak.onError` when the Tizen TTS engine reports an error.
5+
* Update the example app and integration_test.
6+
17
## 1.5.1
28

39
* Update code format.

packages/flutter_tts/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ This package is not an _endorsed_ implementation of `flutter_tts`. Therefore, yo
1010

1111
```yaml
1212
dependencies:
13-
flutter_tts: ^4.2.0
14-
flutter_tts_tizen: ^1.5.1
13+
flutter_tts: ^4.2.5
14+
flutter_tts_tizen: ^1.6.0
1515
```
1616
1717
Then you can import `flutter_tts` in your Dart code:

packages/flutter_tts/example/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ environment:
99
dependencies:
1010
flutter:
1111
sdk: flutter
12-
flutter_tts: ^4.2.0
12+
flutter_tts: ^4.2.5
1313
flutter_tts_tizen:
1414
path: ../
1515

packages/flutter_tts/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: flutter_tts_tizen
22
description: The Tizen implementation of flutter_tts plugin.
33
homepage: https://github.com/flutter-tizen/plugins
44
repository: https://github.com/flutter-tizen/plugins/tree/master/packages/flutter_tts
5-
version: 1.5.1
5+
version: 1.6.0
66

77
environment:
88
sdk: ">=3.1.0 <4.0.0"

packages/flutter_tts/tizen/src/flutter_tts_tizen_plugin.cc

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,6 @@ class FlutterTtsTizenPlugin : public flutter::Plugin {
5252
});
5353

5454
tts_ = std::make_unique<TextToSpeech>();
55-
if (!tts_->Initialize()) {
56-
tts_ = nullptr;
57-
return;
58-
}
5955
tts_->SetStateChanagedCallback([this](TtsState previous, TtsState current) {
6056
std::unique_ptr<flutter::EncodableValue> value =
6157
std::make_unique<flutter::EncodableValue>(true);
@@ -83,6 +79,16 @@ class FlutterTtsTizenPlugin : public flutter::Plugin {
8379
channel_->InvokeMethod("speak.onComplete", std::move(args));
8480
HandleAwaitSpeakCompletion(flutter::EncodableValue(1));
8581
});
82+
tts_->SetErrorCallback([this](const std::string &message) {
83+
std::unique_ptr<flutter::EncodableValue> args =
84+
std::make_unique<flutter::EncodableValue>(message);
85+
channel_->InvokeMethod("speak.onError", std::move(args));
86+
HandleAwaitSpeakCompletion(flutter::EncodableValue(0));
87+
});
88+
if (!tts_->Initialize()) {
89+
tts_ = nullptr;
90+
return;
91+
}
8692
}
8793

8894
virtual ~FlutterTtsTizenPlugin() {}
@@ -196,7 +202,10 @@ class FlutterTtsTizenPlugin : public flutter::Plugin {
196202
rate = std::min(rate, 1.0);
197203
// Scale the value to be between the supported range.
198204
int32_t min = 0, normal = 0, max = 0;
199-
tts_->GetSpeedRange(&min, &normal, &max);
205+
if (!tts_->GetSpeedRange(&min, &normal, &max) || max < min) {
206+
SendResult(flutter::EncodableValue(0));
207+
return;
208+
}
200209
int32_t speed = min + (max - min) * rate;
201210
tts_->SetTtsSpeed(speed);
202211
SendResult(flutter::EncodableValue(1));
@@ -304,7 +313,7 @@ class FlutterTtsTizenPlugin : public flutter::Plugin {
304313
}
305314

306315
void HandleAwaitSpeakCompletion(const flutter::EncodableValue &result) {
307-
if (await_speak_completion_) {
316+
if (await_speak_completion_ && result_for_await_speak_completion_) {
308317
result_for_await_speak_completion_->Success(result);
309318
result_for_await_speak_completion_ = nullptr;
310319
}

packages/flutter_tts/tizen/src/text_to_speech.cc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,19 @@ void TextToSpeech::RegisterCallbacks() {
128128
tts_set_error_cb(
129129
tts_,
130130
[](tts_h tts, int32_t utt_id, tts_error_e reason, void *user_data) {
131+
TextToSpeech *self = static_cast<TextToSpeech *>(user_data);
131132
LOG_ERROR("TTS error: utt_id(%d), reason(%d)", utt_id, reason);
133+
self->ClearUttId();
134+
if (self->error_callback_) {
135+
char *error_message = nullptr;
136+
int ret = tts_get_error_message(tts, &error_message);
137+
if (ret == TTS_ERROR_NONE && error_message) {
138+
self->error_callback_(error_message);
139+
free(error_message);
140+
} else {
141+
self->error_callback_(get_error_message(reason));
142+
}
143+
}
132144
},
133145
this);
134146
}

packages/flutter_tts/tizen/src/text_to_speech.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ enum class TtsState { kCreated, kReady, kPlaying, kPaused };
1818
using StateChangedCallback =
1919
std::function<void(TtsState previous, TtsState current)>;
2020
using UtteranceCompletedCallback = std::function<void(int32_t utt_id)>;
21+
using ErrorCallback = std::function<void(const std::string &message)>;
2122

2223
class TextToSpeech {
2324
public:
@@ -35,6 +36,8 @@ class TextToSpeech {
3536
utterance_completed_callback_ = callback;
3637
}
3738

39+
void SetErrorCallback(ErrorCallback callback) { error_callback_ = callback; }
40+
3841
std::string GetDefaultLanguage() { return default_language_; }
3942

4043
void SetDefaultLanguage(const std::string &language) {
@@ -102,6 +105,7 @@ class TextToSpeech {
102105

103106
StateChangedCallback state_changed_callback_;
104107
UtteranceCompletedCallback utterance_completed_callback_;
108+
ErrorCallback error_callback_;
105109
};
106110

107111
#endif // FLUTTER_PLUGIN_TEXT_TO_SPEACH_H_

0 commit comments

Comments
 (0)