如何在ExpansionTile中展示ListView.builder子项,无报错却不显示内容怎么办
问题排查及修复步骤
- 修复ListView.builder高度约束冲突
ExpansionTile的子节点处于无高度上限的布局环境,可滚动组件ListView.builder默认会尝试占满无限高度,导致无法渲染。你需要给ListView.builder添加两个参数:
同时你已经给外层Container设置了固定高度,外层的ListView.builder( shrinkWrap: true, // 让列表只包裹自身内容的高度 physics: const NeverScrollableScrollPhysics(), // 禁止列表单独滚动,避免和父页面滚动冲突,不需要列表独立滚动可加 // 其余原有参数保持不变 )Flexible组件属于冗余逻辑,可以直接移除Flexible包裹,只保留带固定宽高的Container即可。- 修复ListView.builder高度约束冲突
- 校验数据源是否正常
先硬编码itemCount: 2测试,如果能正常渲染2个卡片,说明你的books数组为空或者没有正确赋值,检查数据初始化、数据添加逻辑即可。
- 校验数据源是否正常
- 修复ListTile高度适配问题
你的ListTile的trailing高度设为100,subtitle包含2行文本,默认高度不足以容纳,会导致布局异常,给ListTile添加参数:
ListTile( isThreeLine: true, // 适配多行内容的高度 // 其余原有参数保持不变 )- 修复ListTile高度适配问题
- 可选优化:修正参数拼写错误
你的customExpansionTile方法中接收子组件的参数名拼写为childern,属于拼写错误,建议修正为children避免后续维护踩坑,当前拼写和调用逻辑对应,不影响运行。
- 可选优化:修正参数拼写错误
内容的提问来源于stack exchange,提问作者TimeToCode
相关产品推荐
相关产品推荐

