PagePath constructor

PagePath(
  1. String path, {
  2. bool? isAbsolute,
  3. Map<String, dynamic>? extra,
})

Implementation

factory PagePath(
  String path, {
  bool? isAbsolute,
  Map<String, dynamic>? extra,
}) {
  path = path.trim();
  var pathAndQuery = path.split('?');
  path = pathAndQuery.first;

  isAbsolute ??= path.startsWith('/');
  path = _trimSlashes(path);

  var segments = path.split('/').where((e) => e.isNotEmpty).toList();
  if (segments.isNotEmpty) {
    var normalized = p.url.normalize(segments.join('/'));
    segments = p.url.split(normalized);
  }

  Map<String, String>? queryParameters;
  if (pathAndQuery.length > 1) {
    var query = pathAndQuery[1];
    queryParameters = Uri(query: query).queryParameters;
  }

  return PagePath._(
    segments,
    isAbsolute: isAbsolute,
    queryParameters: queryParameters,
    extra: extra,
  );
}