例如,如果您有列表:
List<Map<String,int>> list = <Map<String,int>>[
{"string1": 44},
{"string2" : "string in place of int"}
];
或
List<Map<String,int>> list = new List<Map<String,int>>();
list.addAll([
{"string1": 44},
{"string2" : "string in place of int"}]
);
不应该有“string代替int”的警告吗?
答案 0 :(得分:3)
除非您在已检查模式下执行代码,否则Dart不会使用类型。
当Dart未处于检查模式(生产中应该是这种情况)时根本没有类型,错误的类型或正确的类型没有区别(没有错误,没有速度增益)。
答案 1 :(得分:2)
要从分析器或DartEditor获取警告,您需要像
一样编写它List<Map<String,int>> list = <Map<String,int>>[
<String,int>{"string1": 44},
<String,int>{"string2" : "string in place of int"}
];
答案 2 :(得分:0)
在Dart中,静态检查器不会抱怨每个可能的类型违规,因为代码有可能是正确的。在运行时,非法操作完成后会出现异常。
当我使用时:
{"string2" : "string in place of int"}
我制作地图:Map<dynamic,dynamic>
,动态关闭静态检查器。
Dart允许此代码运行,因为向下分配可能有效,Dart乐观地知道您正在做什么。
所以我的地图可能是Map<String,int>
然后它是正确的,如果没有抛出异常。