implementAsBlocking static method

CKRecordKeyValueSetting implementAsBlocking({
  1. required CKRecordValue? objectForKey_(
    1. DartCKRecordFieldKey key
    ),
  2. required void setObject_forKey_(
    1. CKRecordValue?,
    2. DartCKRecordFieldKey
    ),
  3. required CKRecordValue? objectForKeyedSubscript_(
    1. DartCKRecordFieldKey key
    ),
  4. required void setObject_forKeyedSubscript_(
    1. CKRecordValue?,
    2. DartCKRecordFieldKey
    ),
  5. required NSArray allKeys(),
  6. required NSArray changedKeys(),
  7. bool $keepIsolateAlive = true,
})

Builds an object that implements the CKRecordKeyValueSetting 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 CKRecordKeyValueSetting implementAsBlocking({
  required CKRecordValue? Function(DartCKRecordFieldKey) objectForKey_,
  required void Function(CKRecordValue?, DartCKRecordFieldKey)
  setObject_forKey_,
  required CKRecordValue? Function(DartCKRecordFieldKey)
  objectForKeyedSubscript_,
  required void Function(CKRecordValue?, DartCKRecordFieldKey)
  setObject_forKeyedSubscript_,
  required objc.NSArray Function() allKeys,
  required objc.NSArray Function() changedKeys,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'CKRecordKeyValueSetting',
  );
  CKRecordKeyValueSetting.objectForKey_.implement(builder, objectForKey_);
  CKRecordKeyValueSetting.setObject_forKey_.implementAsBlocking(
    builder,
    setObject_forKey_,
  );
  CKRecordKeyValueSetting.objectForKeyedSubscript_.implement(
    builder,
    objectForKeyedSubscript_,
  );
  CKRecordKeyValueSetting.setObject_forKeyedSubscript_.implementAsBlocking(
    builder,
    setObject_forKeyedSubscript_,
  );
  CKRecordKeyValueSetting.allKeys.implement(builder, allKeys);
  CKRecordKeyValueSetting.changedKeys.implement(builder, changedKeys);
  builder.addProtocol($protocol);
  return CKRecordKeyValueSetting.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}