implementAsBlocking static method

NSSharingServicePickerTouchBarItemDelegate implementAsBlocking({
  1. required NSArray itemsForSharingServicePickerTouchBarItem_(
    1. NSSharingServicePickerTouchBarItem
    ),
  2. NSArray sharingServicePicker_sharingServicesForItems_proposedSharingServices_(
    1. NSSharingServicePicker,
    2. NSArray,
    3. NSArray
    )?,
  3. NSSharingServiceDelegate? sharingServicePicker_delegateForSharingService_(
    1. NSSharingServicePicker,
    2. NSSharingService
    )?,
  4. void sharingServicePicker_didChooseSharingService_(
    1. NSSharingServicePicker,
    2. NSSharingService?
    )?,
  5. NSArray? sharingServicePickerCollaborationModeRestrictions_(
    1. NSSharingServicePicker
    )?,
  6. bool $keepIsolateAlive = true,
})
override

Builds an object that implements the NSSharingServicePickerTouchBarItemDelegate protocol. To implement multiple protocols, use addToBuilder or objc.ObjCProtocolBuilder directly. All methods that can be implemented as blocking listeners will be.

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

Implementation

static NSSharingServicePickerTouchBarItemDelegate implementAsBlocking({
  required objc.NSArray Function(NSSharingServicePickerTouchBarItem)
  itemsForSharingServicePickerTouchBarItem_,
  objc.NSArray Function(NSSharingServicePicker, objc.NSArray, objc.NSArray)?
  sharingServicePicker_sharingServicesForItems_proposedSharingServices_,
  NSSharingServiceDelegate? Function(
    NSSharingServicePicker,
    NSSharingService,
  )?
  sharingServicePicker_delegateForSharingService_,
  void Function(NSSharingServicePicker, NSSharingService?)?
  sharingServicePicker_didChooseSharingService_,
  objc.NSArray? Function(NSSharingServicePicker)?
  sharingServicePickerCollaborationModeRestrictions_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSSharingServicePickerTouchBarItemDelegate',
  );
  NSSharingServicePickerTouchBarItemDelegate
      .itemsForSharingServicePickerTouchBarItem_
      .implement(builder, itemsForSharingServicePickerTouchBarItem_);
  NSSharingServicePickerTouchBarItemDelegate
      .sharingServicePicker_sharingServicesForItems_proposedSharingServices_
      .implement(
        builder,
        sharingServicePicker_sharingServicesForItems_proposedSharingServices_,
      );
  NSSharingServicePickerTouchBarItemDelegate
      .sharingServicePicker_delegateForSharingService_
      .implement(builder, sharingServicePicker_delegateForSharingService_);
  NSSharingServicePickerTouchBarItemDelegate
      .sharingServicePicker_didChooseSharingService_
      .implementAsBlocking(
        builder,
        sharingServicePicker_didChooseSharingService_,
      );
  NSSharingServicePickerTouchBarItemDelegate
      .sharingServicePickerCollaborationModeRestrictions_
      .implement(builder, sharingServicePickerCollaborationModeRestrictions_);
  builder.addProtocol($protocol);
  return NSSharingServicePickerTouchBarItemDelegate.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}