withPointerCallback<T extends NativeType> function

Future<Pointer<T>> withPointerCallback<T extends NativeType>(
  1. dynamic func(
    1. Pointer<NativeFunction<Void Function(Pointer<T>)>>
    )
)

Implementation

Future<Pointer<T>> withPointerCallback<T extends NativeType>(
    Function(Pointer<NativeFunction<Void Function(Pointer<T>)>>) func) async {
  final completer = Completer<Pointer<T>>();
  // ignore: prefer_function_declarations_over_variables
  void Function(Pointer<NativeType>) callback = (Pointer<NativeType> ptr) {
    completer.complete(ptr.cast<T>());
  };
  final nativeCallable =
      NativeCallable<Void Function(Pointer<NativeType>)>.listener(callback);
  func.call(nativeCallable.nativeFunction);
  var ptr = await completer.future;
  nativeCallable.close();
  return ptr;
}