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

Flutter存入接口数据时出现EqualUnmodifiableListView类型转换错误

问题解决步骤

1. 修正变量类型

你的_blogs变量类型声明错误:接口返回的ConfigsDto中的data字段是**List<Config>**类型,而你声明成了List<ConfigsDto>,这是类型不匹配的核心原因。

把变量声明改为:

List<Config> _blogs = [];

2. 修正赋值逻辑

res.data返回的是EqualUnmodifiableListView<Config>(不可变列表),不能直接强制类型转换,需要先转为普通可修改列表:

_blogs.clear();
// 无需类型转换,直接调用toList()转为可修改列表后添加
_blogs.addAll(res.data.toList());

3. 检查模型与接口定义(兜底验证)

确认你的ConfigsDto Freezed定义是否正确,应该包含List<Config>类型的data字段:

@freezed
class ConfigsDto with _$ConfigsDto {
  const factory ConfigsDto({
    required List<Config> data,
    // 可添加其他接口返回字段,比如code、message等
  }) = _ConfigsDto;

  factory ConfigsDto.fromJson(Map<String, dynamic> json) => _$ConfigsDtoFromJson(json);
}

同时确认Retrofit接口的返回类型是ConfigsDto:

@GET("/your-config-api-path")
Future<ConfigsDto> fetchConfigs();

错误原因说明

  • 类型转换失败是因为你试图把Config类型的列表强制转为ConfigsDto类型的列表,两者完全不是同一层级的模型。
  • EqualUnmodifiableListView是Retrofit/Freezed返回的不可变包装列表,必须通过toList()转为普通List才能进行addAll操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:06:01