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

Flutter类型不匹配错误:_InternalLinkedHashMap无法转为List的排查修复

错误原因及修复方案:type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'List<dynamic>'

错误原因

你的API服务代码与Django API返回的数据结构完全不匹配:

  • 服务代码中写了final List result = jsonDecode(response.body)['data'];,错误地将API返回的Map类型的data字段当成List来处理;
  • 你的ProductModel是对应整个API响应的结构(包含status和data两个顶级字段),而非单个产品的结构,但服务代码却试图把data内容转成List<ProductModel>,完全违背了Model的设计逻辑。

修复步骤

1. 修正API服务的解析逻辑

将getProducts的返回类型从Future<List<ProductModel>>改为Future<ProductModel?>,按照Model定义的结构解析整个响应:

修改后的API服务代码:

import 'dart:convert';

import 'package:http/http.dart';

import 'products_model.dart';

class ProductsRepository {
  String baseUrl = "example.com";

  Future<ProductModel?> getProducts() async {
    Response response = await get(Uri.parse(baseUrl));

    try {
      if (response.statusCode == 200) {
        // 直接解析整个响应为ProductModel实例
        final Map<String, dynamic> jsonResponse = jsonDecode(response.body);
        return ProductModel.fromJson(jsonResponse);
      } else {
        throw Exception(response.reasonPhrase);
      }
    } catch (e) {
      print(e.toString());
      return null;
    }
  }
}

2. 正确获取产品列表数据

修复后,你需要从ProductModel的嵌套结构中取出实际的产品列表:

final productRepo = ProductsRepository();
final productModel = await productRepo.getProducts();
if (productModel != null && productModel.data?.products?.results != null) {
  List<Results> productList = productModel.data!.products!.results!;
  // 在这里处理产品列表数据
}

内容的提问来源于stack exchange,提问作者Mozammel Hoshen Chowdhury

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:25:26