import 'package:flutter/foundation.dart'; import 'package:flutter_tts/flutter_tts.dart'; import 'package:trans_lark/widget/base_easyloading.dart'; class TtsManager { TtsManager._(); static final TtsManager _instance = TtsManager._(); factory TtsManager() { return _instance; } late FlutterTts ttsController; Future initTts() async { debugPrint("TTS Service init start"); ttsController = FlutterTts(); await ttsController.setSharedInstance(true); await ttsController.setIosAudioCategory( IosTextToSpeechAudioCategory.ambient, [ IosTextToSpeechAudioCategoryOptions.allowBluetooth, IosTextToSpeechAudioCategoryOptions.allowBluetoothA2DP, IosTextToSpeechAudioCategoryOptions.mixWithOthers ], IosTextToSpeechAudioMode.voicePrompt); await ttsController.awaitSpeakCompletion(true); await ttsController.awaitSynthCompletion(true); debugPrint("TTS Service init success"); } Future translatorTtsPlay(String text, String language) async { try { await ttsController.stop(); await ttsController.setLanguage(language); await ttsController.speak(text); } catch (e) { BaseEasyLoading.toast('This language cannot be played'); return; } } }