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

Flutter:如何在ListView.builder中设置Card固定高度为150?

问题原因分析

你之前用SizedBox包裹Card的子元素无法固定Card高度,核心原因是:

  • Card本身的高度由自身布局约束决定,默认会自适应子元素的尺寸
  • ListView.builder的item没有强制高度限制,Card会跟随子元素的高度收缩或撑开,不会继承子元素的SizedBox限制
解决方法

以下两种方案都能实现Card固定150高度的需求:

方案1:用SizedBox包裹整个Card

直接给Card外层套SizedBox,强制限制整体高度(包含Card的阴影、内边距等):

ListView.builder(
  itemCount: yourItemCount, // 替换为你的实际数据长度
  itemBuilder: (context, index) {
    return SizedBox(
      height: 150,
      child: Card(
        // 这里放置Card的子元素内容
        child: Center(child: Text('Item $index')),
      ),
    );
  },
)

方案2:给Card设置constraints属性

通过BoxConstraints直接强制Card的最小/最大高度为150,无需额外嵌套SizedBox:

ListView.builder(
  itemCount: yourItemCount,
  itemBuilder: (context, index) {
    return Card(
      constraints: const BoxConstraints(minHeight: 150, maxHeight: 150),
      child: Center(child: Text('Item $index')),
    );
  },
)

补充:让子元素占满Card高度

如果需要Card内的子元素填充整个150高度,可以结合Expanded或Align调整子元素布局,示例:

SizedBox(
  height: 150,
  child: Card(
    child: Padding(
      padding: const EdgeInsets.all(12.0),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Expanded(
            child: Text('这是占满剩余高度的内容'),
          ),
          Text('底部固定内容'),
        ],
      ),
    ),
  ),
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:35:28