decodeQueryStringParameters function
Decodes queryString
, allowing single and multiple values per key.
Implementation
Map<String, dynamic> decodeQueryStringParameters(String? queryString,
{String? charset}) {
if (queryString == null || queryString.isEmpty) return {};
var encoding = getCharsetEncoding(charset);
var pairs = queryString.split('&');
var parameters = <String, dynamic>{};
for (var pair in pairs) {
if (pair.isEmpty) continue;
var kv = pair.split('=');
var k = kv[0];
var v = kv.length > 1 ? kv[1] : '';
k = _decodeQueryComponent(k, encoding);
v = _decodeQueryComponent(v, encoding);
var prev = parameters[k];
if (prev == null) {
parameters[k] = v;
} else if (prev is List) {
prev.add(v);
} else {
parameters[k] = [prev, v];
}
}
return parameters;
}