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

Flutter调用REST API时出现‘Null’不是‘String’子类型错误

错误解决:type 'Null' is not a subtype of type 'String'

错误原因

报错指向package:getx_5_rest_api/models/product.dart的第33行(Welcome.fromJson方法),本质是:你把API返回的JSON数据转成Welcome模型时,JSON里某个本该是字符串的字段返回了null,但你的模型类把这个字段定义成了非空的String类型,Dart的类型检查不允许把null赋值给非空变量,所以触发了这个错误。

解决步骤

  • 打开models/product.dart文件,找到Welcome类的fromJson方法,定位第33行,确认是哪个字符串字段出问题(比如title、description这类字段)。
  • 针对该字段二选一处理:
    1. 允许字段为null:把字段类型从String改成String?(可空字符串),同时fromJson对应代码改成this.字段名 = json['字段名'] as String?,
    2. 给默认值兜底:如果业务上字段不能为null,就给个默认字符串,比如this.字段名 = json['字段名'] as String? ?? '默认内容';
  • 检查API返回的所有JSON字段,把其他可能返回null的字符串字段都按上述方式处理,避免重复报错。

新手小技巧

如果你用json_serializable自动生成模型代码,可通过注解简化处理:

  • 允许空值:直接把字段类型设为String?(新版Dart),旧版可加@JsonKey(nullable: true)
  • 设默认值:添加@JsonKey(defaultValue: '')注解

内容的提问来源于stack exchange,提问作者Saad Mansoor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:41:01