我有一个非常简单的方法,可以像这样将动态变量转换为int:
int _convertedNum(dynamic number){
int intNumber = int.parse(number);
return intNumber;
}
我有这个模型课:
class Properties {
dynamic popEst;
dynamic confirmed;
Properties({
this.popEst,
this.confirmed
});
factory Properties.fromJson(String str) => Properties.fromMap(json.decode(str));
String toJson() => json.encode(toMap());
factory Properties.fromMap(Map<String, dynamic> json) => Properties(
popEst: json["pop_est"],
confirmed: json["confirmed"]
);
Map<String, dynamic> toMap() => {
"pop_est": popEst,
"confirmed": confirmed
};
}
现在,当我尝试使用该方法将上述类的属性从dynamic转换为int时:
_convertedNum(properties.popEst);
我得到类型'int'不是'String'类型的子类型错误。我尝试将属性从动态更改为字符串,仍然出现错误。
我也尝试对json进行此操作:
confirmed: json["confirmed"].toInt();
也抛出类似的错误。
如何将属性转换为整数?
答案 0 :(得分:1)
这是因为parse
(如文档所述)采用String
的来源并将其转换为int
,而您所做的(由于错误)却毫无意义int
至parse
,
解决方案:
int func(dynmaic number){
int intNumber = int.parse(number.toString());
return intNumber;
}
答案 1 :(得分:1)
也许您的某些属性已经是整数。由于int.parse()
要使用String
作为参数,因此可以这样做:
int _convertedNum(dynamic number){
int intNumber = int.parse(number.toString());
return intNumber;
}
可以解决您的问题。
答案 2 :(得分:0)
您要传递的数据是整数类型。您可以尝试检查数据类型,如下所示:
if(number is int){
}