implement static method

NSItemProviderWriting implement({
  1. NSItemProviderRepresentationVisibility itemProviderVisibilityForRepresentationWithTypeIdentifier_(
    1. NSString
    )?,
  2. required NSProgress? loadDataWithTypeIdentifier_forItemProviderCompletionHandler_(
    1. NSString,
    2. ObjCBlock<Void Function(NSData?, NSError?)>
    ),
  3. NSArray writableTypeIdentifiersForItemProvider()?,
  4. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSItemProviderWriting protocol. To implement multiple protocols, use addToBuilder or objc.ObjCProtocolBuilder directly.

If $keepIsolateAlive is true, this protocol will keep this isolate alive until it is garbage collected by both Dart and ObjC.

Implementation

static NSItemProviderWriting implement({
  NSItemProviderRepresentationVisibility Function(NSString)?
  itemProviderVisibilityForRepresentationWithTypeIdentifier_,
  required NSProgress? Function(
    NSString,
    objc.ObjCBlock<ffi.Void Function(NSData?, NSError?)>,
  )
  loadDataWithTypeIdentifier_forItemProviderCompletionHandler_,
  NSArray Function()? writableTypeIdentifiersForItemProvider,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSItemProviderWriting',
  );
  NSItemProviderWriting$Builder
      .itemProviderVisibilityForRepresentationWithTypeIdentifier_
      .implement(
        builder,
        itemProviderVisibilityForRepresentationWithTypeIdentifier_,
      );
  NSItemProviderWriting$Builder
      .loadDataWithTypeIdentifier_forItemProviderCompletionHandler_
      .implement(
        builder,
        loadDataWithTypeIdentifier_forItemProviderCompletionHandler_,
      );
  NSItemProviderWriting$Builder.writableTypeIdentifiersForItemProvider
      .implement(builder, writableTypeIdentifiersForItemProvider);
  builder.addProtocol($protocol);
  return NSItemProviderWriting.as(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}