dart – 破坏异常’_InternalLinkedHashMap’不是’Map’类型的子类型

dart – 破坏异常’_InternalLinkedHashMap’不是’Map’类型的子类型,第1张

概述我今天跑了升级… 我现在在v0.2.11上,我在这个函数中遇到一个奇怪的运行时错误: Future apiCall([Map params = const {}]) async { loading = true; Map stringParams = {}; params.forEach((k,v)=>stringParams[k.toString()] = v.toString()) 我今天跑了升级…

我现在在v0.2.11上,我在这个函数中遇到一个奇怪的运行时错误:

Future APICall([Map params = const {}]) async {  loading = true;  Map stringParams = {};  params.forEach((k,v)=>stringParams[k.toString()] = v.toString());  Uri url = new Uri.https(APIDomain,APIPath,stringParams);  print(url);  var result = await http.post(    url,body: {'APIkey': APIKey}  );  loading = false;  print(result.body);  return Json.decode(result.body);}

我正在调用没有任何参数的函数,我得到了子类型错误.

此代码适用于dartpad.

有谁知道可能会发生什么?

解决方法 Uri.https的构造函数需要Map,其运行时类型为Map< String,String>.当您创建没有任何类型注释的stringParams时,您实际上是在创建Map< dynamic,dynamic>.为Dart 2创建这个的正确方法是

Map<String,String> stringParams = {};// orvar stringParams = <String,String>{};

之前工作的原因是在Dart 1中,即使在强模式下,动态也是模糊的,并且像Object和null一样 – 意味着动态类型可以分配给任何东西.在Dart 2中,动态行为就像对象一样,除了你可以在没有向下转换的情况下调用方法或访问属性.

总结

以上是内存溢出为你收集整理的dart – 破坏异常’_InternalLinkedHashMap’不是’Map’类型的子类型全部内容,希望文章能够帮你解决dart – 破坏异常’_InternalLinkedHashMap’不是’Map’类型的子类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001901.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存