在这种情况下,我需要将Map转换为查询字符串(在第一个?之后).例如,如果我有以下 map :

Map json = {
    "email":  eml,
    "password": passwd
};

和基本URL:

String baseURL = "http://localhost:8080/myapp";

然后,我需要一些东西将jSON Map转换为基本URL的查询字符串:

String fullURL = parameterizeURL(baseURL, json);

// Prints: http://localhost:8080/myapp?email=blah&password=meh
// (if "blah" was entered as the email, and "meh" was entered as the password)
print(fullURL);

我在Git上找到了this query String-to-map library个,但我需要这个的inverse个!如果能把URL编码也放进go 就太好了.

I'm happy to make something homegrown but being so new to Dart I was wondering if there's anything on 100/Github/the etherspehere that does this already.

推荐答案

你能描述一下你的用法吗?首先,在GET请求中保留密码等数据不是好做法.这最好是POST请求.也就是说,如果您确实想使用它作为POST请求将 map 发送到服务器,请看一下:HttpRequest.postFormData它会自动将您提供的 map 作为POST数据添加到服务器.需要记住的一点是,数据必须是映射(或者键和值必须是字符串).示例用法:

import 'dart:html';
// ...

// Somewhere in your login related method
HttpRequest.postFormData('login.php', data).then((HttpRequest req) {
  if(req.status != 200) {
    print(req.statusText);
  }
});

有一个用于服务器端Dart的包,它允许您轻松地手工处理各种HTTP请求,恰当地命名为http.但是,这不适用于客户端脚本.我不知道有任何现有的软件包可以提供你想要的功能.

在这一点上,如果您确实决定滚动您自己的,也许可以向您在问题中提到的QueryString项目提供一个Pull请求,这样其他人就可以在一个简单的包中使用这些功能.

Dart相关问答推荐

dart 日期时差(分钟)

Dart 3.3接口字段类型升级不起作用

如何在 Dart 2.17+ 中处理future 的枚举值

ListView 不会刷新,而附加列表会刷新 (Flutter)

在 Dart 中处理字节数组时,使用 Uint8List 优于 List 有什么优势?

SliverList / SliverChildBuilderDelegate 提供初始索引或允许负索引

如何计算列表中元素的出现次数

无法将小部件标记为需要构建,因为框架已经在构建小部件的过程中

属性 'docs' 不能无条件访问,因为接收到的可能是 'null' Flutter

Flutter/Dart Uri 没有在 URL 中转义冒号:

在字符串中查找字母 (charAt)

无法使用 Flutter 调用 Localhost,将随机端口分配给 HTTP GET 调用

Dart 有小部件库吗?

Dart 中的动态类方法调用

如何缩小从 Dart 编辑器编译的 JavaScript 代码?

Dart:并行处理传入的 HTTP 请求

具有 Maps 的 Null 感知运算符

如何将多个 Stream 合并为更高级别的 Stream?

Dart 中的 Math.round() 在哪里?

如何在 Dart 中克​​隆对象(深拷贝)?