query method

String query(
  1. Pointer<Void> handle,
  2. String apiName,
  3. String id,
  4. String jsonParam,
)

同步查询。返回值已是 Dart 侧的 String(native 缓冲内容已 copy 走)。

Implementation

String query(Pointer<Void> handle, String apiName, String id, String jsonParam) {
  if (handle == nullptr) return '';
  final namePtr = apiName.toNativeUtf8();
  final idPtr = id.toNativeUtf8();
  final paramPtr = jsonParam.toNativeUtf8();
  try {
    final resultPtr = _queryFn(handle, namePtr, idPtr, paramPtr);
    if (resultPtr == nullptr) return '';
    // native 侧返回的是 thread_local 缓冲,立即 copy。
    return resultPtr.toDartString();
  } finally {
    calloc.free(namePtr);
    calloc.free(idPtr);
    calloc.free(paramPtr);
  }
}