parseQueryString method

Map<String, List<String>> parseQueryString(
  1. String query
)

Implementation

Map<String, List<String>> parseQueryString(String query) {
  final search = RegExp('([^&=]+)=?([^&]*)');
  final params = Map<String, List<String>>();

  if (query.startsWith('?')) query = query.substring(1);

  decode(String s) => Uri.decodeComponent(s.replaceAll('+', ' '));

  for (Match match in search.allMatches(query)) {
    final key = decode(match.group(1)!);
    final value = decode(match.group(2)!);

    if (params.containsKey(key)) {
      params[key]!.add(value);
    } else {
      params[key] = [value];
    }
  }

  return params;
}