当前位置: 首页 > 知识库问答 >
问题:

为什么抛出类型“int”的parse方法不是类型“String”错误的子类型?

屈健柏
2023-03-14

我有一个非常简单的方法,可以将动态变量转换为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'错误的子类型。我尝试将属性从动态更改为String,仍然是相同的错误。

我还尝试对json执行以下操作:

confirmed: json["confirmed"].toInt();

也抛出类似错误。

请问如何将属性转换为整数?。

共有3个答案

戚浩淼
2023-03-14

您要传递的数据是整数类型。您可以尝试检查数据类型,如下所示:

if(number is int){ 

}
夹谷和韵
2023-03-14

这是因为,正如文档中所说,解析将获取一个字符串源,并将其转换为int,而您所做的(从错误中)是将int传递给parse,

解决方案:

int func(dynmaic number){
    int intNumber = int.parse(number.toString());

    return intNumber;
  }
郏志学
2023-03-14

也许你的一些属性已经是整数了。因为int.parse()想要一个String作为参数,也许可以这样做:

int _convertedNum(dynamic number){
  int intNumber = int.parse(number.toString());

  return intNumber;
}

可以解决你的问题。

 类似资料: