RoutePattern constructor
- String path
Creates a pattern such as /users/:id.
Implementation
RoutePattern(this.path) {
if (!path.startsWith('/') || path.contains('?') || path.contains('#')) {
throw ArgumentError.value(path, 'path', 'Expected an absolute path only');
}
final uri = parseRouteUri(path);
if (uri.hasAuthority || uri.hasScheme) {
throw ArgumentError.value(path, 'path', 'Route patterns must be local');
}
_segments = List.unmodifiable(uri.pathSegments);
final names = <String>{};
for (final segment in _segments) {
if (segment.startsWith(':')) {
final name = segment.substring(1);
if (!RegExp(r'^[A-Za-z_]\w*$').hasMatch(name) || !names.add(name)) {
throw ArgumentError.value(
path, 'path', 'Invalid or duplicate parameter name: $name');
}
}
}
parameters = Set.unmodifiable(names);
}