voiceMessageToText method
Implementation
Future<void> voiceMessageToText(RCIMIWVoiceMessage message) async {
if (message.messageUId == null || message.messageId == null) {
return;
}
engineProvider.engine?.requestSpeechToTextForMessage(message.messageUId!,
callback: IRCIMIWOperationCallback(
onSuccess: () {
debugPrint('requestSpeechToTextForMessage success');
},
onError: (code) {
debugPrint('requestSpeechToTextForMessage error: $code');
for (int i = 0; i < _messages.length; i++) {
if (_messages[i].messageId == message.messageId) {
(_messages[i] as RCIMIWVoiceMessage).speechToTextInfo?.status =
RCIMIWSpeechToTextStatus.failed;
final ctx = _messageListKey.currentContext;
if (ctx != null) {
String errorMessage = '转文字失败,请稍后重试';
switch (code) {
case 30002:
errorMessage = '当前网络不可用,无法转文字,请检查网络设置后再试';
break;
case 35059:
errorMessage = '此语音消息格式不支持转文字功能';
}
ScaffoldMessenger.of(ctx).showSnackBar(
SnackBar(content: Text(errorMessage)),
);
}
notifyListeners();
break;
}
}
},
));
for (int i = 0; i < _messages.length; i++) {
if (_messages[i].messageId == message.messageId) {
(_messages[i] as RCIMIWVoiceMessage).speechToTextInfo?.status =
RCIMIWSpeechToTextStatus.converting;
break;
}
}
addSpeechToTextMessageIdVisible(message.messageId!);
notifyListeners();
}