splitQueryString 静态方法

Map<String, String> splitQueryString(
  1. String query, {
  2. Encoding encoding = utf8,
})

根据HTML 4.01 规范第 17.13.4 节中为表单提交指定的规则,将 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;
  });
}