implement static method

NSFetchedResultsControllerDelegate implement({
  1. void controller_didChangeContentWithSnapshot_(
    1. NSFetchedResultsController,
    2. NSDiffableDataSourceSnapshot
    )?,
  2. void controller_didChangeContentWithDifference_(
    1. NSFetchedResultsController,
    2. NSOrderedCollectionDifference
    )?,
  3. void controller_didChangeObject_atIndexPath_forChangeType_newIndexPath_(
    1. NSFetchedResultsController,
    2. ObjCObjectBase,
    3. NSIndexPath?,
    4. NSFetchedResultsChangeType,
    5. NSIndexPath?,
    )?,
  4. void controller_didChangeSection_atIndex_forChangeType_(
    1. NSFetchedResultsController,
    2. NSFetchedResultsSectionInfo,
    3. DartNSUInteger,
    4. NSFetchedResultsChangeType,
    )?,
  5. void controllerWillChangeContent_(
    1. NSFetchedResultsController
    )?,
  6. void controllerDidChangeContent_(
    1. NSFetchedResultsController
    )?,
  7. NSString? controller_sectionIndexTitleForSectionName_(
    1. NSFetchedResultsController,
    2. NSString
    )?,
  8. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSFetchedResultsControllerDelegate 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 NSFetchedResultsControllerDelegate implement({
  void Function(NSFetchedResultsController, NSDiffableDataSourceSnapshot)?
  controller_didChangeContentWithSnapshot_,
  void Function(
    NSFetchedResultsController,
    objc.NSOrderedCollectionDifference,
  )?
  controller_didChangeContentWithDifference_,
  void Function(
    NSFetchedResultsController,
    objc.ObjCObjectBase,
    NSIndexPath?,
    NSFetchedResultsChangeType,
    NSIndexPath?,
  )?
  controller_didChangeObject_atIndexPath_forChangeType_newIndexPath_,
  void Function(
    NSFetchedResultsController,
    NSFetchedResultsSectionInfo,
    DartNSUInteger,
    NSFetchedResultsChangeType,
  )?
  controller_didChangeSection_atIndex_forChangeType_,
  void Function(NSFetchedResultsController)? controllerWillChangeContent_,
  void Function(NSFetchedResultsController)? controllerDidChangeContent_,
  objc.NSString? Function(NSFetchedResultsController, objc.NSString)?
  controller_sectionIndexTitleForSectionName_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSFetchedResultsControllerDelegate',
  );
  NSFetchedResultsControllerDelegate.controller_didChangeContentWithSnapshot_
      .implement(builder, controller_didChangeContentWithSnapshot_);
  NSFetchedResultsControllerDelegate
      .controller_didChangeContentWithDifference_
      .implement(builder, controller_didChangeContentWithDifference_);
  NSFetchedResultsControllerDelegate
      .controller_didChangeObject_atIndexPath_forChangeType_newIndexPath_
      .implement(
        builder,
        controller_didChangeObject_atIndexPath_forChangeType_newIndexPath_,
      );
  NSFetchedResultsControllerDelegate
      .controller_didChangeSection_atIndex_forChangeType_
      .implement(builder, controller_didChangeSection_atIndex_forChangeType_);
  NSFetchedResultsControllerDelegate.controllerWillChangeContent_.implement(
    builder,
    controllerWillChangeContent_,
  );
  NSFetchedResultsControllerDelegate.controllerDidChangeContent_.implement(
    builder,
    controllerDidChangeContent_,
  );
  NSFetchedResultsControllerDelegate
      .controller_sectionIndexTitleForSectionName_
      .implement(builder, controller_sectionIndexTitleForSectionName_);
  builder.addProtocol($protocol);
  return NSFetchedResultsControllerDelegate.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}