additional error handling to fix freezing and/or catch error message
This commit is contained in:
parent
c94e559b52
commit
10d937ed1b
2 changed files with 62 additions and 6 deletions
|
|
@ -18,8 +18,21 @@ class TtsController {
|
|||
setupTTS();
|
||||
}
|
||||
|
||||
Future<void> dispose() async {
|
||||
await tts.stop();
|
||||
}
|
||||
|
||||
onError(dynamic message) => ErrorHandler.logError(
|
||||
m: 'TTS error',
|
||||
data: {
|
||||
'message': message,
|
||||
},
|
||||
);
|
||||
|
||||
Future<void> setupTTS() async {
|
||||
try {
|
||||
tts.setErrorHandler(onError);
|
||||
|
||||
targetLanguage ??=
|
||||
MatrixState.pangeaController.languageController.userL2?.langCode;
|
||||
|
||||
|
|
@ -53,12 +66,50 @@ class TtsController {
|
|||
}
|
||||
}
|
||||
|
||||
Future<void> speak(String text) async {
|
||||
targetLanguage ??=
|
||||
MatrixState.pangeaController.languageController.userL2?.langCode;
|
||||
|
||||
Future<void> stop() async {
|
||||
try {
|
||||
// return type is dynamic but apparent its supposed to be 1
|
||||
// https://pub.dev/packages/flutter_tts
|
||||
final result = await tts.stop();
|
||||
if (result != 1) {
|
||||
ErrorHandler.logError(
|
||||
m: 'Unexpected result from tts.stop',
|
||||
data: {
|
||||
'result': result,
|
||||
},
|
||||
);
|
||||
}
|
||||
} catch (e, s) {
|
||||
debugger(when: kDebugMode);
|
||||
ErrorHandler.logError(e: e, s: s);
|
||||
}
|
||||
await tts.stop();
|
||||
return tts.speak(text);
|
||||
}
|
||||
|
||||
Future<void> speak(String text) async {
|
||||
try {
|
||||
stop();
|
||||
|
||||
targetLanguage ??=
|
||||
MatrixState.pangeaController.languageController.userL2?.langCode;
|
||||
|
||||
final result = await tts.speak(text);
|
||||
|
||||
// return type is dynamic but apparent its supposed to be 1
|
||||
// https://pub.dev/packages/flutter_tts
|
||||
if (result != 1) {
|
||||
ErrorHandler.logError(
|
||||
m: 'Unexpected result from tts.speak',
|
||||
data: {
|
||||
'result': result,
|
||||
'text': text,
|
||||
},
|
||||
);
|
||||
}
|
||||
} catch (e, s) {
|
||||
debugger(when: kDebugMode);
|
||||
ErrorHandler.logError(e: e, s: s);
|
||||
}
|
||||
}
|
||||
|
||||
bool get isLanguageFullySupported =>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ class WordAudioButtonState extends State<WordAudioButton> {
|
|||
|
||||
TtsController ttsController = TtsController();
|
||||
|
||||
@override
|
||||
@override
|
||||
void initState() {
|
||||
// TODO: implement initState
|
||||
|
|
@ -27,6 +26,12 @@ class WordAudioButtonState extends State<WordAudioButton> {
|
|||
ttsController.setupTTS().then((value) => setState(() {}));
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
ttsController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue