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

Flutter中FutureBuilder报Model无length getter/打印显示Instance of model如何解决?

问题原因

你遇到的报错是两个问题共同导致的:

  1. 网络请求方法没有将返回的json数据转为TopicsModel实例,直接返回了Map类型数据
  2. TopicsModel本身没有length属性,你需要访问它内部的topics列表属性才能拿到长度和对应下标数据

修复步骤

1. 修改getFavTopics方法的返回逻辑

原来的代码里,你直接返回了解析后的data字段Map,需要用TopicsModel.fromJson把Map转为实例:

if (jsonData['status'] == 'success') {
  print("topicssssssssssssssss");
  print(jsonData);
  // 把原来的return json.decode(response.body)['data']改成下面这行
  return TopicsModel.fromJson(jsonData['data']);
}

2. 修改FutureBuilder里的列表取值逻辑

你之前直接对TopicsModel实例调用length和下标索引,需要改成访问内部的topics列表:

return ListView.builder(
  scrollDirection: Axis.horizontal,
  shrinkWrap: true,
  // 原来的projectSnap.data.length改成下面的写法
  itemCount: projectSnap.data.topics.length,
  itemBuilder: (context, index) {
    return new ChoiceChip(
        pressElevation: 0.0,
        selectedColor: settingRepo
            .setting
            .value
            .buttonColor,
        selected: false,
        backgroundColor: Colors.white,
        // 原来的projectSnap.data[index].name改成下面的写法
        label: Text(projectSnap.data.topics[index].name));
  },
);

可选检查

你贴的接口返回JSON存在语法错误:比如artist、image字段的值没有加引号,时间字段里的冒号多出来了,如果是真实接口返回的内容,需要先让后端修正返回格式,否则json解析会直接报错。


内容的提问来源于stack exchange,提问作者عثمان غني

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:06:03