getFirstInjectorWhere method
AutoInjectorImpl?
getFirstInjectorWhere(
- AutoInjectorImpl startInjector,
- bool validation(
- AutoInjectorImpl
Returns the first injector that pass in the validation
.
NOTE: Algorithm based on BFS (breadth-first search)
Implementation
AutoInjectorImpl? getFirstInjectorWhere(
AutoInjectorImpl startInjector,
bool Function(AutoInjectorImpl) validation,
) {
final visited = <AutoInjectorImpl>{};
final queue = Queue<AutoInjectorImpl>();
queue.add(startInjector);
while (queue.isNotEmpty) {
final currentInjector = queue.removeFirst();
if (validation(currentInjector)) {
return currentInjector;
}
if (adjacencyList[currentInjector] == null) continue;
for (final adjacentInjector in adjacencyList[currentInjector]!) {
if (!visited.contains(adjacentInjector)) {
visited.add(adjacentInjector);
queue.add(adjacentInjector);
}
}
}
return null;
}