颤振安卓错误:类型 '_Smi' 不是 'double' 类型作为强制转换的子类型



这些信息可能对那些为Web开发并需要为Android设备部署的人有用。

通过处理json模型中的double数据类型,我在真正的Android手机(而不是任何模拟器(上运行的flutter应用程序中遇到了以下错误:

类型"_Smi"不是类型"double"的子类型作为强制转换

Web版本没有发生此错误,我也没有尝试使用IOS(因为我没有任何IOS设备(。此外,我没有对任何模拟器进行测试。

这是我的型号:

class ModelExample {
int id;
String name;
double percentRank;
ModelExample({
this.id,
this.name,
this.percentRank,
});
factory ModelExample.fromJson(Map<String, dynamic> json) {
return ModelExample(
id: json['id'] as int,
name: json['api_name'] as String,
percentRank: json['api_percent_rank'] as double,
);
}
Map<String, dynamic> toJson() => {
'id': id.toString(),
'api_name': name,
'api_percent_rank': percentRank.toString(),
};
}

我的环境是:

  • Flutter(Channel stable,2.0.5,在Microsoft Windows上[版本10.0.19042.928],语言环境为美国(
  • Dart版本2.12.3
  • Android工具链-为Android设备开发(Android SDK版本30.0.3(
  • Java版本OpenJDK运行时环境(版本1.8.0_224-release-1644-b01(
  • 安卓工作室(4.1.0版(

如何消除此错误?

答案:

解决此问题的方法如下:

通过更改您的型号fromJson方法(摘录(:

factory ModelExample.fromJson(Map<String, dynamic> json) {

...

percentRank: json['api_percent_rank'] as double,

...

}

至:

factory ModelExample.fromJson(Map<String, dynamic> json) {
...
percentRank: double.parse(json['api_percent_rank'].toString()),
...
}

在更改了那条线之后,这个错误就会消失。

要了解更多信息,请查看:https://api.flutter.dev/flutter/dart-core/double/parse.html

最新更新