WebRequest.settings constructor
WebRequest.settings(
- RouteSettings settings, {
- String? route,
from RouteSettings
Implementation
factory WebRequest.settings(
RouteSettings settings, {
String? route,
}) {
Map<String, String>? data = {};
try {
if (route == null) {
throw Exception();
}
if (settings.name == null) {
throw Exception();
}
final requestPath = Uri.parse(settings.name!).path;
final requestPaths =
requestPath.split('/').where((path) => path.isNotEmpty).toList();
final routePaths =
route.split('/').where((path) => path.isNotEmpty).toList();
if (requestPaths.length != routePaths.length) {
throw Exception();
}
for (int i = 0; i < requestPaths.length; i++) {
if (requestPaths[i] != routePaths[i]) {
final match = RegExp(r'^\{(.+)\}$').firstMatch(routePaths[i]);
if (match == null || match.groupCount == 0) {
throw Exception();
}
final name = match.group(1);
data[name!] = requestPaths[i];
}
}
} catch (e) {
route = null;
data = null;
}
return WebRequest._(
settings: settings,
route: route,
data: data,
);
}