Flutter测试报错:type 'Null' is not a subtype of type 'bool' 原因及解决方法
错误原因及解决办法
错误原因
- 核心问题是类型不匹配:在
TelevisiDetailResponse.fromJson方法解析JSON时,某个被声明为非空bool类型的字段,从JSON中读取到了null值,导致类型转换失败。 - 错误发生在
televisi_detail_model.dart第50行,说明该行代码未处理JSON字段为null的情况,而当前测试用的JSON数据里对应字段恰好是null。
解决方法
- 调整模型字段可空性:如果API允许该字段返回
null,将模型中对应字段的类型从bool改为bool?(可空布尔类型),同步更新解析逻辑:// 原错误代码示例: bool adult = json['adult'] as bool; // 修改为可空类型: bool? adult = json['adult'] as bool?; - 设置默认值规避null:如果业务逻辑要求该字段必须有值,在解析时为
null设置默认布尔值:bool adult = json['adult'] as bool? ?? false; // 可根据需求将默认值设为true - 修正测试数据:检查
televisi_remote_data_source_test.dart第118行附近的测试JSON数据,确保对应字段的值是有效的true或false,而非null。
内容的提问来源于stack exchange,提问作者alu
相关产品推荐
相关产品推荐

