splitQueryString 静态方法

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

根据 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;
  });
}