Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Map Dart组件映射。键()_Map_Urlencode_Dart - Fatal编程技术网

Map Dart组件映射。键()

Map Dart组件映射。键(),map,urlencode,dart,Map,Urlencode,Dart,我在许多地方看到了一个示例,用于对地图进行编码,如下所示: 导入('dart:uri'); 字符串编码映射(映射数据){ 返回Strings.join(data.getKeys().map((k){ 返回“${encodeUriComponent(k)}=${encodeUriComponent(data[k])}”; }), "&"); } 我正在运行最新的Dart编辑器(版本0.2.9_r 16323) 在上面的示例中,对于Dart M2,我认为data.getKeys()已更改为data

我在许多地方看到了一个示例,用于对地图进行编码,如下所示:

导入('dart:uri'); 字符串编码映射(映射数据){ 返回Strings.join(data.getKeys().map((k){ 返回“${encodeUriComponent(k)}=${encodeUriComponent(data[k])}”; }), "&"); } 我正在运行最新的Dart编辑器(版本0.2.9_r 16323) 在上面的示例中,对于Dart M2,我认为
data.getKeys()
已更改为
data.keys()
,我已对其进行了更改

但是,在编辑器中运行时出现错误:

异常:NoSuchMethodError:找不到方法:“调用”

我有两个问题:

  • 我想知道上面的代码是否仍然可以在M2中使用(Map.keys())
  • 我想知道上面的代码是否与以下代码有所不同:JSON.stringify(data)
欢迎任何其他指点

TIA.

需要做两项更改:

  • import
    语法已更改
  • getKeys()
    方法成为名为
    keys
    的getter
工作版本:

导入'dart:uri';
字符串编码映射(映射数据){
返回Strings.join(data.keys.map)((k){
返回“${encodeUriComponent(k)}=${encodeUriComponent(data[k])}”;
}), "&");
}
encodeMap
生成的
String
JSON.stringify
生成的字符串非常不同,您可以在下面的代码段中看到:

main(){
最终地图={“a”:“b”,“c”:“d”};
断言(encodeMap(map)=“a=b&c=d”);
assert(JSON.stringify(map)='{“a”:“b”,“c”:“d”}');
}

非常感谢您的回答。它回答了我的两个问题。我错过了getKeys().map()改为keys.map()而不是keys().map()的微妙之处。encodeMap()中的解决方案的语法至少对我来说相当神秘。使用类似于JSON.stringify()的函数难道没有意义吗处理这个问题?非常感谢,因为我花了很长时间试图解决对我来说是个问题。虽然我认为Dart绝对很棒,但jquery似乎通过使用$.ajax()更优雅地处理了这个问题。我认为Dart(目前)没有类似的东西。