implementAsBlocking static method

NSDrawerDelegate implementAsBlocking({
  1. bool drawerShouldOpen_(
    1. NSDrawer
    )?,
  2. bool drawerShouldClose_(
    1. NSDrawer
    )?,
  3. NSSize drawerWillResizeContents_toSize_(
    1. NSDrawer,
    2. NSSize
    )?,
  4. void drawerWillOpen_(
    1. NSNotification
    )?,
  5. void drawerDidOpen_(
    1. NSNotification
    )?,
  6. void drawerWillClose_(
    1. NSNotification
    )?,
  7. void drawerDidClose_(
    1. NSNotification
    )?,
  8. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSDrawerDelegate 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 NSDrawerDelegate implementAsBlocking({
  bool Function(NSDrawer)? drawerShouldOpen_,
  bool Function(NSDrawer)? drawerShouldClose_,
  NSSize Function(NSDrawer, NSSize)? drawerWillResizeContents_toSize_,
  void Function(objc.NSNotification)? drawerWillOpen_,
  void Function(objc.NSNotification)? drawerDidOpen_,
  void Function(objc.NSNotification)? drawerWillClose_,
  void Function(objc.NSNotification)? drawerDidClose_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(debugName: 'NSDrawerDelegate');
  NSDrawerDelegate.drawerShouldOpen_.implement(builder, drawerShouldOpen_);
  NSDrawerDelegate.drawerShouldClose_.implement(builder, drawerShouldClose_);
  NSDrawerDelegate.drawerWillResizeContents_toSize_.implement(
    builder,
    drawerWillResizeContents_toSize_,
  );
  NSDrawerDelegate.drawerWillOpen_.implementAsBlocking(
    builder,
    drawerWillOpen_,
  );
  NSDrawerDelegate.drawerDidOpen_.implementAsBlocking(
    builder,
    drawerDidOpen_,
  );
  NSDrawerDelegate.drawerWillClose_.implementAsBlocking(
    builder,
    drawerWillClose_,
  );
  NSDrawerDelegate.drawerDidClose_.implementAsBlocking(
    builder,
    drawerDidClose_,
  );
  builder.addProtocol($protocol);
  return NSDrawerDelegate.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}