splitQueryString 静态方法
根据 HTML 4.01 规范部分 17.13.4 为表单 post 定义的规则,将 query
分割成一个映射。
返回映射中的每个键和值都已经被解码。如果 query
为空字符串,则返回空映射。
查询字符串中没有值的键将被映射到空字符串。
每个查询组件将使用 encoding
进行解码。默认编码为 UTF-8。
示例
final queryStringMap =
Uri.splitQueryString('limit=10&max=100&search=Dart%20is%20fun');
print(jsonEncode(queryStringMap));
// {"limit":"10","max":"100","search":"Dart is fun"}
实现
static Map<String, String> splitQueryString(String query,
{Encoding encoding = utf8}) {
return query.split("&").fold({}, (map, element) {
int index = element.indexOf("=");
if (index == -1) {
if (element != "") {
map[decodeQueryComponent(element, encoding: encoding)] = "";
}
} else if (index != 0) {
var key = element.substring(0, index);
var value = element.substring(index + 1);
map[decodeQueryComponent(key, encoding: encoding)] =
decodeQueryComponent(value, encoding: encoding);
}
return map;
});
}