registerConstructor<T extends Object> method

Resolvable<Lazy<T>> registerConstructor<T extends Object>(
  1. @sendable FutureOr<T> constructor(), {
  2. Option<TOnRegisterCallback<Lazy<T>>> onRegister = const None(),
  3. Option<TOnUnregisterCallback<Lazy<T>>> onUnregister = const None(),
  4. Entity groupEntity = const DefaultEntity(),
})
inherited

Registers a lazy dependency.

Implementation

@pragma('vm:prefer-inline')
Resolvable<Lazy<T>> registerConstructor<T extends Object>(
  @sendable FutureOr<T> Function() constructor, {
  Option<TOnRegisterCallback<Lazy<T>>> onRegister = const None(),
  Option<TOnUnregisterCallback<Lazy<T>>> onUnregister = const None(),
  Entity groupEntity = const DefaultEntity(),
}) {
  // One-line adapter closure that only captures `constructor` (itself
  // `@sendable`). The analyzer cannot verify transitive sendability of
  // arbitrary closures, but the capture set here is provably sendable
  // when callers respect the `@sendable` requirement on `constructor`.
  return registerLazy<T>(
    // ignore: sendable
    () => Resolvable<T>(() => constructor()),
    onRegister: onRegister,
    onUnregister: onUnregister,
    groupEntity: groupEntity,
  );
}