Skip to content

Commit

Permalink
[flutter_tts] Update flutter_tts to 4.2.0
Browse files Browse the repository at this point in the history
Update flutter_tts 3.6.3 to 4.2.0.
Update the example app.
Add isLanguageAvailable API which was not implemented.
  • Loading branch information
seungsoo47 committed Nov 15, 2024
1 parent d6a64ec commit ad1081e
Show file tree
Hide file tree
Showing 8 changed files with 71 additions and 33 deletions.
6 changes: 5 additions & 1 deletion packages/flutter_tts/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
## NEXT
## 1.5.0

* Update minimum Flutter and Dart version to 3.13 and 3.1.
* Update flutter_tts 3.6.3 to 4.2.0.
* Update the example app.
* Add isLanguageAvailable API which was not implemented.


## 1.4.0

Expand Down
4 changes: 2 additions & 2 deletions packages/flutter_tts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ This package is not an _endorsed_ implementation of `flutter_tts`. Therefore, yo

```yaml
dependencies:
flutter_tts: ^3.6.3
flutter_tts_tizen: ^1.4.0
flutter_tts: ^4.2.0
flutter_tts_tizen: ^1.5.0
```
Then you can import `flutter_tts` in your Dart code:
Expand Down
63 changes: 35 additions & 28 deletions packages/flutter_tts/example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,18 @@ class _MyAppState extends State<MyApp> {

TtsState ttsState = TtsState.stopped;

get isPlaying => ttsState == TtsState.playing;
get isStopped => ttsState == TtsState.stopped;
get isPaused => ttsState == TtsState.paused;
get isContinued => ttsState == TtsState.continued;
bool get isPlaying => ttsState == TtsState.playing;
bool get isStopped => ttsState == TtsState.stopped;
bool get isPaused => ttsState == TtsState.paused;
bool get isContinued => ttsState == TtsState.continued;

@override
initState() {
super.initState();
initTts();
}

initTts() {
dynamic initTts() {
flutterTts = FlutterTts();

_setAwaitOptions();
Expand Down Expand Up @@ -85,16 +85,16 @@ class _MyAppState extends State<MyApp> {
});
}

Future<dynamic> _getLanguages() => flutterTts.getLanguages;
Future<dynamic> _getLanguages() async => await flutterTts.getLanguages;

Future _getDefaultVoice() async {
Future<void> _getDefaultVoice() async {
var voice = await flutterTts.getDefaultVoice;
if (voice != null) {
print(voice);
}
}

Future _speak() async {
Future<void> _speak() async {
await flutterTts.setVolume(volume);
await flutterTts.setSpeechRate(rate);

Expand All @@ -105,16 +105,16 @@ class _MyAppState extends State<MyApp> {
}
}

Future _setAwaitOptions() async {
Future<void> _setAwaitOptions() async {
await flutterTts.awaitSpeakCompletion(true);
}

Future _stop() async {
Future<void> _stop() async {
var result = await flutterTts.stop();
if (result == 1) setState(() => ttsState = TtsState.stopped);
}

Future _pause() async {
Future<void> _pause() async {
var result = await flutterTts.pause();
if (result == 1) setState(() => ttsState = TtsState.paused);
}
Expand All @@ -126,16 +126,19 @@ class _MyAppState extends State<MyApp> {
}

List<DropdownMenuItem<String>> getLanguageDropDownMenuItems(
dynamic languages) {
List<dynamic> languages) {
var items = <DropdownMenuItem<String>>[];
for (dynamic type in languages) {
items.add(DropdownMenuItem(
value: type as String?, child: Text(type as String)));
value: type as String?, child: Text((type as String))));
}
return items;
}

void changedLanguageDropDownItem(String? selectedType) {
void changedLanguageDropDownItem(String? selectedType) async {
var result = await flutterTts.isLanguageAvailable(selectedType!);
if (result == 0) return;

setState(() {
language = selectedType;
flutterTts.setLanguage(language!);
Expand Down Expand Up @@ -175,23 +178,27 @@ class _MyAppState extends State<MyApp> {
future: _getLanguages(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.hasData) {
return _languageDropDownSection(snapshot.data);
return _languageDropDownSection(snapshot.data as List<dynamic>);
} else if (snapshot.hasError) {
return Text('Error loading languages...');
} else
return Text('Loading Languages...');
});

Widget _inputSection() => Container(
alignment: Alignment.topCenter,
padding: EdgeInsets.only(top: 25.0, left: 25.0, right: 25.0),
child: TextField(
maxLines: 11,
minLines: 6,
onChanged: (String value) {
_onChange(value);
},
));
Widget _inputSection() {
_newVoiceText = 'Hello everyone. This is a flutter tts example app.';
return Container(
alignment: Alignment.topCenter,
padding: EdgeInsets.only(top: 25.0, left: 25.0, right: 25.0),
child: TextField(
maxLines: 11,
minLines: 6,
onChanged: (String value) {
_onChange(value);
},
controller: TextEditingController(text: _newVoiceText),
));
}

Widget _btnSection() {
return Container(
Expand All @@ -210,7 +217,7 @@ class _MyAppState extends State<MyApp> {
);
}

Widget _languageDropDownSection(dynamic languages) => Container(
Widget _languageDropDownSection(List<dynamic> languages) => Container(
padding: EdgeInsets.only(top: 10.0),
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
DropdownButton(
Expand Down Expand Up @@ -272,7 +279,7 @@ class _MyAppState extends State<MyApp> {
min: 0.0,
max: 1.0,
divisions: 10,
label: "Volume: $volume");
label: "Volume: ${volume.toStringAsFixed(1)}");
}

Widget _rate() {
Expand All @@ -284,7 +291,7 @@ class _MyAppState extends State<MyApp> {
min: 0.0,
max: 1.0,
divisions: 10,
label: "Rate: $rate",
label: "Rate: ${rate.toStringAsFixed(1)}",
activeColor: Colors.green,
);
}
Expand Down
2 changes: 1 addition & 1 deletion packages/flutter_tts/example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ environment:
dependencies:
flutter:
sdk: flutter
flutter_tts: ^3.6.3
flutter_tts: ^4.2.0
flutter_tts_tizen:
path: ../

Expand Down
2 changes: 1 addition & 1 deletion packages/flutter_tts/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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/master/packages/flutter_tts
version: 1.4.0
version: 1.5.0

environment:
sdk: ">=3.1.0 <4.0.0"
Expand Down
13 changes: 13 additions & 0 deletions packages/flutter_tts/tizen/src/flutter_tts_tizen_plugin.cc
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ class FlutterTtsTizenPlugin : public flutter::Plugin {
OnGetMaxSpeechInputLength();
} else if (method_name == "setVolume") {
OnSetVolume(arguments);
} else if (method_name == "isLanguageAvailable") {
OnIsLanguageAvailable(arguments);
} else {
result_->NotImplemented();
}
Expand Down Expand Up @@ -236,6 +238,17 @@ class FlutterTtsTizenPlugin : public flutter::Plugin {
SendResult(flutter::EncodableValue(0));
}

void OnIsLanguageAvailable(const flutter::EncodableValue &arguments) {
if (std::holds_alternative<std::string>(arguments)) {
std::string language = std::move(std::get<std::string>(arguments));
if (!language.empty() && tts_->IsLanguageAvailable(language)) {
SendResult(flutter::EncodableValue(1));
return;
}
}
SendResult(flutter::EncodableValue(0));
}

void SendResult(const flutter::EncodableValue &result) {
if (result_) {
result_->Success(result);
Expand Down
12 changes: 12 additions & 0 deletions packages/flutter_tts/tizen/src/text_to_speech.cc
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,18 @@ bool TextToSpeech::GetSpeedRange(int32_t *min, int32_t *normal, int32_t *max) {
return true;
}

bool TextToSpeech::IsLanguageAvailable(const std::string &language) {
if (supported_lanaguages_.size() == 0) {
GetSupportedLanaguages();
}

if (std::find(supported_lanaguages_.begin(), supported_lanaguages_.end(),
language) != supported_lanaguages_.end()) {
return true;
}
return false;
}

void TextToSpeech::SwitchVolumeOnStateChange(tts_state_e previous,
tts_state_e current) {
if (previous == TTS_STATE_PLAYING) {
Expand Down
2 changes: 2 additions & 0 deletions packages/flutter_tts/tizen/src/text_to_speech.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ class TextToSpeech {

bool SetVolume(double volume);

bool IsLanguageAvailable(const std::string &language);

bool GetSpeedRange(int32_t *min, int32_t *normal, int32_t *max);

void SetTtsSpeed(int32_t speed) { tts_speed_ = speed; }
Expand Down

0 comments on commit ad1081e

Please sign in to comment.