newCallbackWithPtrUtf8 function

Callback<CbFuncWithPtrUft8> newCallbackWithPtrUtf8()

Creates a new callback with a UTF-8 pointer.

Returns a Callback instance with the specified function type.

Implementation

Callback<CbFuncWithPtrUft8> newCallbackWithPtrUtf8() {
  final completer = Completer<AskarCallbackResult>();

  late final NativeCallable<CbFuncWithPtrUft8> nativeCallable;

  void callback(int callbackId, int errorCode, Pointer<Utf8> utf8) {
    completer.complete(
      AskarCallbackResult(
        ErrorCode.fromInt(errorCode),
        true,
        utf8 == nullptr ? null : utf8.toDartString(),
      ),
    );
    calloc.free(utf8);
    nativeCallable.close();
  }

  nativeCallable = NativeCallable<CbFuncWithPtrUft8>.listener(callback);

  return Callback<CbFuncWithPtrUft8>(nativeCallable, completer, nextCallbackId());
}