implement static method

NSCollectionViewElement implement({
  1. void prepareForReuse()?,
  2. void applyLayoutAttributes_(
    1. NSCollectionViewLayoutAttributes
    )?,
  3. void willTransitionFromLayout_toLayout_(
    1. NSCollectionViewLayout,
    2. NSCollectionViewLayout
    )?,
  4. void didTransitionFromLayout_toLayout_(
    1. NSCollectionViewLayout,
    2. NSCollectionViewLayout
    )?,
  5. NSCollectionViewLayoutAttributes preferredLayoutAttributesFittingAttributes_(
    1. NSCollectionViewLayoutAttributes
    )?,
  6. required NSString? identifier(),
  7. required void setIdentifier_(
    1. DartNSUserInterfaceItemIdentifier?
    ),
  8. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSCollectionViewElement 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 NSCollectionViewElement implement({
  void Function()? prepareForReuse,
  void Function(NSCollectionViewLayoutAttributes)? applyLayoutAttributes_,
  void Function(NSCollectionViewLayout, NSCollectionViewLayout)?
  willTransitionFromLayout_toLayout_,
  void Function(NSCollectionViewLayout, NSCollectionViewLayout)?
  didTransitionFromLayout_toLayout_,
  NSCollectionViewLayoutAttributes Function(NSCollectionViewLayoutAttributes)?
  preferredLayoutAttributesFittingAttributes_,
  required DartNSUserInterfaceItemIdentifier? Function() identifier,
  required void Function(DartNSUserInterfaceItemIdentifier?) setIdentifier_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSCollectionViewElement',
  );
  NSCollectionViewElement.prepareForReuse.implement(builder, prepareForReuse);
  NSCollectionViewElement.applyLayoutAttributes_.implement(
    builder,
    applyLayoutAttributes_,
  );
  NSCollectionViewElement.willTransitionFromLayout_toLayout_.implement(
    builder,
    willTransitionFromLayout_toLayout_,
  );
  NSCollectionViewElement.didTransitionFromLayout_toLayout_.implement(
    builder,
    didTransitionFromLayout_toLayout_,
  );
  NSCollectionViewElement.preferredLayoutAttributesFittingAttributes_
      .implement(builder, preferredLayoutAttributesFittingAttributes_);
  NSCollectionViewElement.identifier.implement(builder, identifier);
  NSCollectionViewElement.setIdentifier_.implement(builder, setIdentifier_);
  builder.addProtocol($protocol);
  return NSCollectionViewElement.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}