You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter调用API遇类型转换错误:int无法转为double,无法渲染商品容器

解决Flutter JSON解析时int转double的类型异常

问题原因

从错误栈能明确看到,异常出现在Rating.fromJson方法的第52行——API返回的评分字段(比如rate)是int类型,但你的模型类里把该字段定义成了double类型,Dart的严格类型检查不允许直接将int赋值给double,因此抛出type 'int' is not a subtype of type 'double'异常。

解决方案

1. 修改Rating模型的JSON解析逻辑

找到package:flutter_fake_api/model/model.dart文件的第52行,把原本直接强制转成double的代码,改成先转成num类型再调用toDouble()方法,这样不管API返回的是int还是double,都能正确转为double类型。

修改前代码:

Rating.fromJson(Map<String, dynamic> json)
    : rate = json['rate'] as double,
      count = json['count'] as int;

修改后代码:

Rating.fromJson(Map<String, dynamic> json)
    : rate = (json['rate'] as num).toDouble(),
      count = json['count'] as int;

2. 可选:增加空值容错处理

如果API可能返回null值,可以再加一层空值判断,避免空指针异常:

Rating.fromJson(Map<String, dynamic> json)
    : rate = (json['rate'] as num?)?.toDouble() ?? 0.0,
      count = json['count'] as int? ?? 0;

验证修改

改完之后重新调用ProductService.fetchProducts,就能正常解析API返回的数据,之后就可以把数据渲染到包含标题、图片、价格、分类、描述、评分的容器里了。

内容的提问来源于stack exchange,提问作者Priyanka Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 14:05:13