inject<T> method

T inject<T>()

Resolves a dependency of type T.

Lookups proceed in the following order:

  1. Local overrides registered via override or overrideType.
  2. Local bindings registered via provide, provideSingleton, or provideValue.
  3. Recursive lookup in parent, if present.

Throws a StateError if no provider is registered for T in this container or its ancestors.

final client = container.inject<BloomHttpClient>();

Implementation

T inject<T>() {
  if (_overrides.containsKey(T)) {
    return _overrides[T] as T;
  }

  final binding = _bindings[T];
  if (binding != null) {
    return binding.resolve() as T;
  }

  if (parent != null) {
    return parent!.inject<T>();
  }

  throw StateError(
    'BloomContainer: No provider registered for type "$T". '
    'Ensure you called `provide<$T>()` or `provideSingleton<$T>()` before resolving.',
  );
}