这些信息可能对那些为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