tryResolve<T> method

T? tryResolve<T>({
  1. String? named,
})

RU: Возвращает найденную зависимость типа T или null, если она не может быть найдена. ENG: Returns found dependency of type T or null if it cannot be found.

Implementation

T? tryResolve<T>({String? named}) {
  // 1 Поиск зависимости по всем модулям текущего скоупа
  if (_modulesList.isNotEmpty) {
    for (var module in _modulesList) {
      for (var binding in module.bindingSet) {
        if (binding.key == T &&
            ((!binding.isNamed && named == null) ||
                (binding.isNamed && named == binding.name))) {
          switch (binding.mode) {
            case Mode.INSTANCE:
              return binding.instance;
            case Mode.PROVIDER_INSTANCE:
              return binding.provider;
            default:
              return null;
          }
        }
      }
    }
  }

  // 2 Поиск зависимостей в родительском скоупе
  return _parentScope != null ? _parentScope!.tryResolve(named: named) : null;
}