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

如何在Flutter中创建带固定行数的横向紧凑滚动列表?

Flutter实现固定行数的横向紧凑滚动列表

要实现固定行数、横向滚动的紧凑列表,Wrap组件因默认纵向换行的特性无法满足需求,这里提供两种适配方案:

方案1:用GridView实现(固定宽高比)

这种方式无需手动拆分数据,适合item宽高比例固定的场景:

GridView.custom(
  scrollDirection: Axis.horizontal,
  padding: const EdgeInsets.all(8),
  gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
    crossAxisCount: 2, // 设置固定行数(示例为2行)
    crossAxisSpacing: 8, // 行间距
    mainAxisSpacing: 8, // 列间距
    childAspectRatio: 2.5, // 控制item宽高比,按需调整
  ),
  childrenDelegate: SliverChildBuilderDelegate(
    (context, index) {
      return Container(
        padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
        decoration: BoxDecoration(
          color: Colors.grey[200],
          borderRadius: BorderRadius.circular(16),
        ),
        child: Center(child: Text('Item $index')),
      );
    },
    childCount: 20, // 总item数量
  ),
)

方案2:用SingleChildScrollView+Column+Wrap实现(内容自适应宽度)

如果需要item宽度根据内容自动调整,可将数据拆分到对应行,再用Wrap横向排列:

// 示例数据
final items = List.generate(20, (i) => 'Item $i');
// 将数据拆分为两行(可按实际需求调整拆分逻辑)
final rowItems = [
  items.where((e) => items.indexOf(e) % 2 == 0).toList(),
  items.where((e) => items.indexOf(e) % 2 != 0).toList(),
];

// 布局实现
SingleChildScrollView(
  scrollDirection: Axis.horizontal,
  padding: const EdgeInsets.all(8),
  child: SizedBox(
    height: 80, // 固定两行的总高度,按需调整
    child: Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: rowItems.map((row) {
        return Wrap(
          spacing: 8, // item横向间距
          children: row.map((item) {
            return Container(
              padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
              decoration: BoxDecoration(
                color: Colors.grey[200],
                borderRadius: BorderRadius.circular(16),
              ),
              child: Text(item),
            );
          }).toList(),
        );
      }).toList(),
    ),
  ),
)

两种方案都能实现横向滚动、固定行数的紧凑布局,可根据实际需求选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:00:24