getEntityRepositoryByType<T extends Object> method

EntityRepository<T>? getEntityRepositoryByType<T extends Object>(
  1. Type type, {
  2. EntityRepositoryProvider? entityRepositoryProvider,
  3. EntityHandlerProvider? entityHandlerProvider,
  4. bool removeClosedProviders = false,
})

Implementation

EntityRepository<T>? getEntityRepositoryByType<T extends Object>(Type type,
    {EntityRepositoryProvider? entityRepositoryProvider,
    EntityHandlerProvider? entityHandlerProvider,
    bool removeClosedProviders = false}) {
  var self = this;
  if (self is! List<EntityRepositoryProvider> &&
      self is! Set<EntityRepositoryProvider>) {
    self = self.toList(growable: false);
  }

  var length = self.length;
  if (length == 0) {
    return null;
  } else if (length == 1) {
    return self.first.getEntityRepositoryByType<T>(type);
  }

  var notClosed = _whereNotClosed(self, length, removeClosedProviders);

  var entityRepositories = notClosed
      .map((e) => e.getEntityRepositoryByType<T>(type))
      .whereNotNull()
      .toList();

  return _resolveEntityRepository<T>(entityRepositories, type,
      entityRepositoryProvider, entityHandlerProvider);
}