translateText method

Future<V2TimValueCallback<Map<String, String>>> translateText({
  1. required List<String> texts,
  2. required String targetLanguage,
  3. String? sourceLanguage,
})

Implementation

Future<V2TimValueCallback<Map<String, String>>> translateText({
  required List<String> texts,
  required String targetLanguage,
  String? sourceLanguage,
}) async {
  if (!TIMManager.instance.isInitSDK()) {
    return V2TimValueCallback<Map<String, String>>(code: TIMErrCode.ERR_SDK_NOT_INITIALIZED.value, desc: "sdk not init");
  }

  String userData = Tools.generateUserData('translateText');
  Completer<V2TimValueCallback<Map<String, String>>> completer = Completer();
  void handleApiCallback(Map jsonResult) {
    V2TimValueCallback<List<dynamic>> callbackResult = V2TimValueCallback<List<dynamic>>.fromJson(jsonResult);
    List<Map<String, dynamic>> resultList = callbackResult.data?.whereType<Map<String, dynamic>>().toList() ?? [];
    Map<String, String> result = Tools.jsonList2Map<String>(resultList, 'msg_translate_text_source_text', 'msg_translate_text_target_text');

    completer.complete(V2TimValueCallback<Map<String, String>>(code: callbackResult.code, desc: callbackResult.desc, data: result));
  }
  NativeLibraryManager.timApiValueCallback2Future(userData, handleApiCallback);

  Pointer<Char> pTexts = Tools.string2PointerChar(json.encode(texts));
  Pointer<Char> pSourceLanguage = Tools.string2PointerChar(sourceLanguage ?? '');
  Pointer<Char> pTargetLanguage = Tools.string2PointerChar(targetLanguage);
  Pointer<Void> pUserData = Tools.string2PointerVoid(userData);
  NativeLibraryManager.bindings.DartTranslateText(pTexts, pSourceLanguage, pTargetLanguage, pUserData);

  return completer.future;
}