query method

RouteflyQuery? query(
  1. String path
)

Retrieves query and parameters for a given path.

Implementation

RouteflyQuery? query(String path) {
  final data = <String, dynamic>{};
  final uriCandidate = Uri.parse(path);

  if (uri.pathSegments.length != uriCandidate.pathSegments.length) {
    return null;
  }

  for (var i = 0; i < uriCandidate.pathSegments.length; i++) {
    final segmentCandidate = uriCandidate.pathSegments[i];
    final segment = uri.pathSegments[i];

    if (segmentCandidate.contains('[')) {
      final key = segmentCandidate //
          .replaceFirst('[', '')
          .replaceFirst(']', '');
      final value = num.tryParse(segment) ?? segment;
      data[key] = value;
      continue;
    }

    if (segment != segmentCandidate) {
      return null;
    }
  }

  return RouteflyQuery(
    uri.queryParameters,
    data,
    request?.arguments,
  );
}