diff --git a/android/src/main/kotlin/com/tundralabs/fluttertts/FlutterTtsPlugin.kt b/android/src/main/kotlin/com/tundralabs/fluttertts/FlutterTtsPlugin.kt index f239b2af..5c5c6380 100644 --- a/android/src/main/kotlin/com/tundralabs/fluttertts/FlutterTtsPlugin.kt +++ b/android/src/main/kotlin/com/tundralabs/fluttertts/FlutterTtsPlugin.kt @@ -588,10 +588,10 @@ class FlutterTtsPlugin : MethodCallHandler, FlutterPlugin { } private fun getEngines(result: Result) { - val engines = ArrayList() + val engines = ArrayList>() try { for (engineInfo in tts!!.engines) { - engines.add(engineInfo.name) + engines.add(hashMapOf("name" to engineInfo.name, "label" to engineInfo.label)) } } catch (e: Exception) { Log.d(tag, "getEngines: " + e.message) diff --git a/lib/flutter_tts.dart b/lib/flutter_tts.dart index 0d2d2f2a..f07d6d3f 100644 --- a/lib/flutter_tts.dart +++ b/lib/flutter_tts.dart @@ -5,8 +5,8 @@ import 'package:flutter/services.dart'; import 'package:flutter/foundation.dart' show kIsWeb; typedef ErrorHandler = void Function(dynamic message); -typedef ProgressHandler = void Function( - String text, int start, int end, String word); +typedef ProgressHandler = + void Function(String text, int start, int end, String word); const String iosAudioCategoryOptionsKey = 'iosAudioCategoryOptionsKey'; const String iosAudioCategoryKey = 'iosAudioCategoryKey'; @@ -373,13 +373,15 @@ class FlutterTts { /// [Future] which invokes the platform specific method for synthesizeToFile /// ***Android and iOS supported only*** - Future synthesizeToFile(String text, String fileName, - [bool isFullPath = false]) async => - _channel.invokeMethod('synthesizeToFile', { - "text": text, - "fileName": fileName, - "isFullPath": isFullPath, - }); + Future synthesizeToFile( + String text, + String fileName, [ + bool isFullPath = false, + ]) async => _channel.invokeMethod('synthesizeToFile', { + "text": text, + "fileName": fileName, + "isFullPath": isFullPath, + }); /// [Future] which invokes the platform specific method for setLanguage Future setLanguage(String language) async => @@ -408,14 +410,15 @@ class FlutterTts { /// [Future] which invokes the platform specific method for setting audio category /// ***Ios supported only*** - Future setIosAudioCategory(IosTextToSpeechAudioCategory category, - List options, - [IosTextToSpeechAudioMode mode = - IosTextToSpeechAudioMode.defaultMode]) async { + Future setIosAudioCategory( + IosTextToSpeechAudioCategory category, + List options, [ + IosTextToSpeechAudioMode mode = IosTextToSpeechAudioMode.defaultMode, + ]) async { const categoryToString = { IosTextToSpeechAudioCategory.ambientSolo: iosAudioCategoryAmbientSolo, IosTextToSpeechAudioCategory.ambient: iosAudioCategoryAmbient, - IosTextToSpeechAudioCategory.playback: iosAudioCategoryPlayback + IosTextToSpeechAudioCategory.playback: iosAudioCategoryPlayback, }; const optionsToString = { IosTextToSpeechAudioCategoryOptions.mixWithOthers: @@ -448,14 +451,15 @@ class FlutterTts { try { return await _channel .invokeMethod('setIosAudioCategory', { - iosAudioCategoryKey: categoryToString[category], - iosAudioCategoryOptionsKey: - options.map((o) => optionsToString[o]).toList(), - iosAudioModeKey: modeToString[mode], - }); + iosAudioCategoryKey: categoryToString[category], + iosAudioCategoryOptionsKey: + options.map((o) => optionsToString[o]).toList(), + iosAudioModeKey: modeToString[mode], + }); } on PlatformException catch (e) { print( - 'setIosAudioCategory error, category: $category, mode: $mode, error: ${e.message}'); + 'setIosAudioCategory error, category: $category, mode: $mode, error: ${e.message}', + ); } } @@ -493,8 +497,10 @@ class FlutterTts { /// [Future] which invokes the platform specific method for getEngines /// Returns a list of installed TTS engines /// ***Android supported only*** - Future get getEngines async { - final engines = await _channel.invokeMethod('getEngines'); + Future>> get getEngines async { + final List enginesRaw = await _channel.invokeMethod('getEngines'); + final List> engines = + enginesRaw.map((e) => Map.from(e as Map)).toList(); return engines; } @@ -541,14 +547,16 @@ class FlutterTts { await _channel.invokeMethod('areLanguagesInstalled', languages); Future get getSpeechRateValidRange async { - final validRange = await _channel.invokeMethod('getSpeechRateValidRange') - as Map; + final validRange = + await _channel.invokeMethod('getSpeechRateValidRange') + as Map; final min = double.parse(validRange['min'].toString()); final normal = double.parse(validRange['normal'].toString()); final max = double.parse(validRange['max'].toString()); final platformStr = validRange['platform'].toString(); - final platform = - TextToSpeechPlatform.values.firstWhere((e) => e.name == platformStr); + final platform = TextToSpeechPlatform.values.firstWhere( + (e) => e.name == platformStr, + ); return SpeechRateValidRange(min, normal, max, platform); }