matches method

  1. @override
bool matches(
  1. RouteSettings settings
)
override

If this route definition matches a RouteSettings object

Implementation

@override
bool matches(RouteSettings settings) {
  final url = Uri.tryParse(settings.name!);
  if (url == null) return false;
  if (url.pathSegments.isEmpty) {
    return false;
  }

  if (url.pathSegments.length > routes.length) return false;

  for (var i = 0; i < url.pathSegments.length; i++) {
    var hasMatchAtLevel = false;
    final part = url.pathSegments[i];
    for (final matcher in routes[i]) {
      if (matcher.matches(RouteSettings(name: '/$part'))) {
        hasMatchAtLevel = true;
      }
    }
    if (!hasMatchAtLevel) {
      return false;
    }
  }
  return true;
}