register<T extends Object?> method

bool register<T extends Object?>(
  1. InstanceBuilder<T> builder, {
  2. String? id,
  3. InstanceManageMode mode = InstanceManageMode.builder,
})

Register a builder function for creating a new instance of T with an id optional.

Use mode parameter for defining how to manage the instance.

Returns true when instance has been registered.

Implementation

bool register<T extends Object?>(
  InstanceBuilder<T> builder, {
  String? id,
  InstanceManageMode mode = InstanceManageMode.builder,
}) {
  var reactterInstance = _getReactterInstance<T?>(id);

  if (reactterInstance != null) {
    Reactter.log(
      'The "$reactterInstance" builder already registered as `$mode`.',
    );
    return false;
  }

  reactterInstance = _ReactterInstanceBuilder<T>(
    builder,
    id: id,
    mode: mode,
  );

  _reactterInstance.add(reactterInstance);

  Reactter.emit(reactterInstance, Lifecycle.registered);
  Reactter.log(
    'The "$reactterInstance" builder has been registered as `$mode`.',
  );
  return true;
}