implementAsBlocking static method

NSFetchedResultsControllerDelegate implementAsBlocking({
  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. 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 NSFetchedResultsControllerDelegate implementAsBlocking({
  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_
      .implementAsBlocking(builder, controller_didChangeContentWithSnapshot_);
  NSFetchedResultsControllerDelegate
      .controller_didChangeContentWithDifference_
      .implementAsBlocking(
        builder,
        controller_didChangeContentWithDifference_,
      );
  NSFetchedResultsControllerDelegate
      .controller_didChangeObject_atIndexPath_forChangeType_newIndexPath_
      .implementAsBlocking(
        builder,
        controller_didChangeObject_atIndexPath_forChangeType_newIndexPath_,
      );
  NSFetchedResultsControllerDelegate
      .controller_didChangeSection_atIndex_forChangeType_
      .implementAsBlocking(
        builder,
        controller_didChangeSection_atIndex_forChangeType_,
      );
  NSFetchedResultsControllerDelegate.controllerWillChangeContent_
      .implementAsBlocking(builder, controllerWillChangeContent_);
  NSFetchedResultsControllerDelegate.controllerDidChangeContent_
      .implementAsBlocking(builder, controllerDidChangeContent_);
  NSFetchedResultsControllerDelegate
      .controller_sectionIndexTitleForSectionName_
      .implement(builder, controller_sectionIndexTitleForSectionName_);
  builder.addProtocol($protocol);
  return NSFetchedResultsControllerDelegate.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}