Flutter API请求应用报错:Null不是DateTime子类型求助
解决Flutter中
type 'Null' is not a subtype of type 'DateTime'异常 这个异常的核心原因是:你在解析API返回的日期字段时,该字段的值为null,但代码里强制要求它是非空的DateTime类型,导致类型转换失败。
排查与修复步骤:
- 先确认API返回数据:打印接口返回的完整JSON,检查对应日期字段(比如
created_at、update_time这类)是否存在null值。大概率是后端接口最近调整,某些场景下该字段不再返回或返回空值。 - 修改数据模型类:
- 如果业务允许日期字段为空:把模型中的
DateTime改为可空类型DateTime?,并在解析时判断null:class ApiResponseModel { final DateTime? targetDate; ApiResponseModel({this.targetDate}); factory ApiResponseModel.fromJson(Map<String, dynamic> json) { return ApiResponseModel( targetDate: json['target_date'] != null ? DateTime.parse(json['target_date']) : null, ); } } - 如果业务要求日期字段必须有值:给null场景设置默认值,比如当前时间:
targetDate: DateTime.parse( json['target_date'] ?? DateTime.now().toIso8601String() ),
- 如果业务允许日期字段为空:把模型中的
- UI层处理可空值:如果用了可空类型,在展示时要先判断是否为null,避免后续错误:
Text( model.targetDate != null ? DateFormat('yyyy-MM-dd').format(model.targetDate!) : '暂无数据' ) - 调试小技巧:在解析JSON前先打印原始数据,快速定位哪个字段出问题:
print('原始API响应: $json');
之前运行正常是因为后端一直返回非空的日期值,近期接口变更才触发了这个隐藏的类型兼容问题。
内容的提问来源于stack exchange,提问作者Sabith
相关产品推荐
相关产品推荐

