namedLocation method
Implementation
String namedLocation(
String name, {
Map<String, String> pathParameters = const {},
Map<String, dynamic> queryParameters = const {},
String? fragment,
}) {
_ensureOpen();
final path = _namedPaths[name];
if (path == null) throw ArgumentError.value(name, 'name', 'Unknown route');
final required =
RegExp(r':(\w+)').allMatches(path).map((m) => m[1]!).toSet();
if (!required.every(pathParameters.containsKey) ||
pathParameters.keys.any((p) => !required.contains(p))) {
throw ArgumentError('Path parameters must match $required');
}
final encoded = path.replaceAllMapped(
RegExp(r':(\w+)'),
(m) => Uri.encodeComponent(pathParameters[m[1]]!),
);
// Parse an already escaped path, rather than passing it to Uri(path: ...).
return Uri.parse(encoded)
.replace(
queryParameters: queryParameters.isEmpty ? null : queryParameters,
fragment: fragment,
)
.toString();
}