Flutter ListTile中Image.network设置height后高度不生效如何解决?
ListTile 对 leading 区域存在默认布局约束,会覆盖子组件设置的宽高参数,因此直接给 Image 配置 height、width 无法生效,可通过以下两种方案解决:
- 方案1:保留 ListTile 组件,调整配置参数
给 ListTile 添加minLeadingWidth属性匹配你需要的宽度,同时在 ClipRRect 外层套 SizedBox 强制指定宽高,代码示例如下:
ListTile( // 适配leading自定义宽度,避免默认最小宽度约束 minLeadingWidth: 55, leading: SizedBox( width: 55, height: 90, child: ClipRRect( borderRadius: BorderRadius.circular(10.0), child: Image.network( book.urlImage, fit: BoxFit.cover, ), ), ), // 其余title、trailing等属性保持原有配置即可 )
- 方案2:完全自定义布局,不受 ListTile 约束
如果需要更灵活的尺寸控制,可以直接用 Row 组合实现 ListTile 的布局效果,代码示例如下:
Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ ClipRRect( borderRadius: BorderRadius.circular(10.0), child: Image.network( book.urlImage, fit: BoxFit.cover, width: 55, height: 90, ), ), // 模拟ListTile默认的leading和内容间距 SizedBox(width: 16), // 原有ListTile的title、subtitle、trailing组件依次放在此处 ], )
如果调整后仍存在尺寸异常,可检查 ListTile 的父级组件是否存在额外的高度、宽度约束限制。
内容的提问来源于stack exchange,提问作者TimeToCode
相关产品推荐
相关产品推荐

