implementAsBlocking static method

NSPageControllerDelegate implementAsBlocking({
  1. DartNSPageControllerObjectIdentifier pageController_identifierForObject_(
    1. NSPageController,
    2. ObjCObjectBase
    )?,
  2. NSViewController pageController_viewControllerForIdentifier_(
    1. NSPageController,
    2. DartNSPageControllerObjectIdentifier
    )?,
  3. NSRect pageController_frameForObject_(
    1. NSPageController,
    2. ObjCObjectBase?
    )?,
  4. void pageController_prepareViewController_withObject_(
    1. NSPageController,
    2. NSViewController,
    3. ObjCObjectBase?
    )?,
  5. void pageController_didTransitionToObject_(
    1. NSPageController,
    2. ObjCObjectBase
    )?,
  6. void pageControllerWillStartLiveTransition_(
    1. NSPageController
    )?,
  7. void pageControllerDidEndLiveTransition_(
    1. NSPageController
    )?,
  8. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSPageControllerDelegate 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 NSPageControllerDelegate implementAsBlocking({
  DartNSPageControllerObjectIdentifier Function(
    NSPageController,
    objc.ObjCObjectBase,
  )?
  pageController_identifierForObject_,
  NSViewController Function(
    NSPageController,
    DartNSPageControllerObjectIdentifier,
  )?
  pageController_viewControllerForIdentifier_,
  NSRect Function(NSPageController, objc.ObjCObjectBase?)?
  pageController_frameForObject_,
  void Function(NSPageController, NSViewController, objc.ObjCObjectBase?)?
  pageController_prepareViewController_withObject_,
  void Function(NSPageController, objc.ObjCObjectBase)?
  pageController_didTransitionToObject_,
  void Function(NSPageController)? pageControllerWillStartLiveTransition_,
  void Function(NSPageController)? pageControllerDidEndLiveTransition_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSPageControllerDelegate',
  );
  NSPageControllerDelegate.pageController_identifierForObject_.implement(
    builder,
    pageController_identifierForObject_,
  );
  NSPageControllerDelegate.pageController_viewControllerForIdentifier_
      .implement(builder, pageController_viewControllerForIdentifier_);
  NSPageControllerDelegate.pageController_frameForObject_.implement(
    builder,
    pageController_frameForObject_,
  );
  NSPageControllerDelegate.pageController_prepareViewController_withObject_
      .implementAsBlocking(
        builder,
        pageController_prepareViewController_withObject_,
      );
  NSPageControllerDelegate.pageController_didTransitionToObject_
      .implementAsBlocking(builder, pageController_didTransitionToObject_);
  NSPageControllerDelegate.pageControllerWillStartLiveTransition_
      .implementAsBlocking(builder, pageControllerWillStartLiveTransition_);
  NSPageControllerDelegate.pageControllerDidEndLiveTransition_
      .implementAsBlocking(builder, pageControllerDidEndLiveTransition_);
  builder.addProtocol($protocol);
  return NSPageControllerDelegate.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}