我在很多地方都看到了一个用于编码Map的示例,如下所示:
#import('dart:uri');
String encodeMap(Map data) {
return Strings.join(data.getKeys().map((k) {
return "${encodeUriComponent(k)}=${encodeUriComponent(data[k])}";
}), "&");
}
我正在运行看似最新的Dart编辑器(版本0.2.9_r 16323)
在上面的示例中,对于Dart M2,我认为data.getKeys()
已更改为我已更改的data.keys()
。
但是,在编辑器中运行时出现错误:
异常:NoSuchMethodError:找不到方法:'call'“
我有两个问题:
欢迎任何其他指示。
TIA。
答案 0 :(得分:0)
要做两处更改:
import
语法已更改。getKeys()
方法成为名为keys
的吸气剂。工作版本:
import 'dart:uri';
String encodeMap(Map data) {
return Strings.join(data.keys.map((k) {
return "${encodeUriComponent(k)}=${encodeUriComponent(data[k])}";
}), "&");
}
此String
生成的encodeMap
与JSON.stringify
生成的main() {
final map = {"a":"b", "c":"d"};
assert(encodeMap(map) == "a=b&c=d");
assert(JSON.stringify(map) == '{"a":"b","c":"d"}');
}
完全不同,您可以在下面的代码段中看到:
{{1}}