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

Dart/Flutter解析嵌套JSON对象数组,仅显示单个数据问题排查

排查步骤及解决方案

1. 验证JSON解析与模型映射

  • 检查Dart模型类是否正确对应嵌套JSON结构,确保Test2所在的数组/对象被正确解析为列表属性:
    // 示例模型类,需匹配实际JSON结构
    class TestGroup {
      final List<TestItem> items;
      TestGroup({required this.items});
      
      factory TestGroup.fromJson(Map<String, dynamic> json) {
        return TestGroup(
          items: List<TestItem>.from(json['items'].map((x) => TestItem.fromJson(x))),
        );
      }
    }
    
    class TestItem {
      final String name;
      TestItem({required this.name});
      
      factory TestItem.fromJson(Map<String, dynamic> json) {
        return TestItem(name: json['name']);
      }
    }
    
  • 打印API返回的response.body,确认JSON中确实包含Test2的数据,排除后端返回缺失的情况。

2. 检查列表数据源赋值

  • 确认刷新回调中是否将解析后的完整数据赋值给列表,而非仅取第一个元素:
    void _onRefresh() async {
      final response = await http.get(Uri.parse('你的API地址'));
      final testGroup = TestGroup.fromJson(jsonDecode(response.body));
      setState(() {
        _testItems = testGroup.items; // 赋值整个列表,而非testGroup.items[0]
      });
      _refreshController.refreshCompleted();
    }
    
  • 打印_testItems.length,确认数据源包含2条及以上数据。

3. 排查列表渲染逻辑

  • 确保ListView.builder的itemCount设置为数据源长度,而非硬编码为1:
    Widget _buildTestList() {
      return ListView.builder(
        itemCount: _testItems.length, // 此处必须是列表实际长度
        itemBuilder: (context, index) {
          return ListTile(title: Text(_testItems[index].name));
        },
      );
    }
    
  • 检查是否存在条件过滤代码(如if (index == 0)),导致Test2被隐藏。

4. 确认pull_to_refresh_flutter3组件配置

  • 确保PullToRefresh正确包裹列表组件,未因高度限制导致Test2被遮挡:
    @override
    Widget build(BuildContext context) {
      return Scaffold(
        body: PullToRefresh(
          controller: _refreshController,
          onRefresh: _onRefresh,
          child: _buildTestList(),
        ),
      );
    }
    

内容的提问来源于stack exchange,提问作者fisi-pjm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:55:20