本教程向您展示了将地图中的数值转换成URL查询字符串和查询字符串转换成地图的多种方法。这在Flutter中也适用。
查询字符串是一个键和值附加到URL上,由& 。
如何在dart和flutter中把地图转换为查询字符串
有时,我们在Dart中有一个键和值的地图
var employee = {"email": "abc@abc.com", "id": "1"};
你想输出
http://dev.localhost.com:8080/?email=abc%40abc.com&id=1
URL类包含有以下参数的constrcutor scheme,host,port,path,queryParameters。
Uri Uri({
String? the scheme, String? userInfo, String? host, int? port, String? path, Iterable? pathSegments, String? query, Map? queryParameters, String? fragment, })
queryParameters 是一个字符串和动态的地图。
下面是一个例子
void main() {
var employee = {"email": "abc@abc.com", "id": "1"};
Uri queryStringUrl = new Uri(
scheme: 'http',
host: 'dev.localhost.com',
port: 8080,
path: '/',
queryParameters: employee);
print(queryStringUrl);
}
输出:
http://dev.localhost.com:8080/?email=abc%40abc.com&id=1
如何在dart和flutter中把查询字符串转换为地图?
这个例子解析了查询字符串,并转换为地图。
我们有多种方法可以做到这一点:
- 使用Uri splitQueryString方法:
Uri类有splitQueryString方法,有查询和编码参数。
Map splitQueryString(String query, {Encoding encoding = utf8})
它接受查询字符串并返回地图。它对包含查询字符串的完整URL不起作用。
- 使用Uri parse和
queryParameters:首先,使用Uri.parse()方法解析URL,并调用queryParameters属性。它接收完整的URL并将其转换为Map。它对URL的子串,即查询字符串不起作用。
下面是一个例子
void main() {
final String queryString = 'email=abc%40abc.com&id=1';
final String completeUrl =
'http://dev.localhost.com:8080/?email=abc%40abc.com&id=1';
final Map map = Uri.splitQueryString(queryString);
print(map); // {email: abc@abc.com, id: 1}
final Map map1 = Uri.splitQueryString(completeUrl);
print(map1); // {http://dev.localhost.com:8080/?email: abc@abc.com, id: 1}
final Uri url1 = Uri.parse(queryString);
print(url1.queryParameters); // {}
final Uri url2 = Uri.parse(completeUrl);
print(url2.queryParameters); //{email: abc@abc.com, id: 1}
}
输出
{email: abc@abc.com, id: 1}
{http://dev.localhost.com:8080/?email: abc@abc.com, id: 1}
{}
{email: abc@abc.com, id: 1}
结论
学习了如何在dart和flutter中把查询字符串解析成地图,反之亦然。