Flutter中ListView无法展示API数据问题求助(GridView正常)
解决方案:修复横向ListView无法显示的问题
问题根源
你的EbookHorizontalList组件中,ListView.builder被错误地包裹在Expanded组件内。Expanded仅适用于Flex布局(Row/Column),而它的直接父组件是Padding,外层又是固定高度的SizedBox,这种结构会导致ListView无法获取正确的布局约束,最终无法渲染内容。
修复步骤
- 移除
ListView.builder外层的Expanded组件 - 确保
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
相关产品推荐
相关产品推荐

