resolveMiddleware method

void resolveMiddleware(
  1. MiddlewareRegistry registry
)

Resolves aliases into instances. Called by Router.compile.

Implementation

void resolveMiddleware(MiddlewareRegistry registry) {
  final types = <Type>{};
  final instances = <Middleware>{};
  for (final entry in _excluded) {
    if (entry is Type) {
      types.add(entry);
      continue;
    }
    for (final middleware in registry.resolve(entry)) {
      // Closures all share one type, so they go by identity.
      if (middleware is FunctionalMiddleware) {
        instances.add(middleware);
      } else {
        types.add(middleware.runtimeType);
      }
    }
  }
  _resolved = List.unmodifiable(
    registry
        .resolveAll(_middleware)
        .where(
          (m) => !types.contains(m.runtimeType) && !instances.contains(m),
        ),
  );
  _withBindings = null;
}