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

Flutter中ListView无法展示API数据问题求助(GridView正常)

解决方案:修复横向ListView无法显示的问题

问题根源

你的EbookHorizontalList组件中,ListView.builder被错误地包裹在Expanded组件内。Expanded仅适用于Flex布局(Row/Column),而它的直接父组件是Padding,外层又是固定高度的SizedBox,这种结构会导致ListView无法获取正确的布局约束,最终无法渲染内容。

修复步骤

  1. 移除ListView.builder外层的Expanded组件
  2. 确保ListView在固定高度的SizedBox内可以正确获取尺寸约束

修改后的EbookHorizontalList代码

import 'package:ebook_ui/ebook_item.dart';
import 'package:ebook_ui/ebook_provider.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class EbookHorizontalList extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final ebooks = Provider.of<Ebooks>(context, listen: false);
    return SizedBox(
      height: 200,
      child: Padding(
        padding: const EdgeInsets.only(top: 15.0),
        // 移除多余的Expanded组件
        child: ListView.builder(
          addAutomaticKeepAlives: true,
          itemCount: ebooks.imageslist.length,
          scrollDirection: Axis.horizontal,
          physics: const ClampingScrollPhysics(),
          padding: const EdgeInsets.only(left: 15.0),
          itemBuilder: (BuildContext context, int index) {
            return EbookItem(index);
          },
        ),
      ),
    );
  }
}

额外验证点

  • 确认ebooks.imageslist确实有数据(GridView能正常显示,这一步大概率没问题)
  • 检查EbookItem的尺寸是否合理:当前设置的height:170、width:120在200高度的SizedBox内完全适配,无需调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:32