voiceMessageToText method

Future<void> voiceMessageToText(
  1. RCIMIWVoiceMessage message
)

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();
}