首页 > 解决方案 > Flutter 具有动态宽度的水平网格视图

问题描述

我尝试过使用Flutter_staggered_grid_view,但似乎它更适合垂直滚动。

我的目标是拥有一个具有动态宽度的水平网格视图,以使网格感觉自然而不是分散开

这就是我所拥有的(我删除了一些 UI 代码,但基本相同)

GridView.builder(
  scrollDirection: Axis.horizontal,
  itemCount: sourceList.length,
  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: .3),
  itemBuilder: (context, i) {
    final e = sourceList[i];
    return Text(
      e.name,
    );
  },
);

在此处输入图像描述

这就是我要找的

在此处输入图像描述

标签: flutterdartgridviewhorizontal-scrollinghorizontalscrollview

解决方案


这是我可以通过使用三元运算符来调整的最大值mainAxisCellCount。您可以根据最短和最长字符串的长度调整计数。

   Container(
            height: 180.0,
            child: StaggeredGridView.countBuilder(
              crossAxisCount: 4,
              itemCount: 8,
              scrollDirection: Axis.horizontal,
              itemBuilder: (BuildContext context, int index) =>  Container(
                child: Center(child: Container(
                    padding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 15.0),
                    child: Chip(
                        label: Text('${fruits[index]}', overflow: TextOverflow.visible, maxLines: 1, style: TextStyle(),)))),
              ),
              staggeredTileBuilder: (int index) => StaggeredTile.count(2, fruits[index].length > 3 ? fruits[index].length > 8 ? fruits[index].length > 2 ? 4 : 3 : 2 : 1),
              mainAxisSpacing: 0.0,
              crossAxisSpacing: 0.0,
            ),
          ),

在此处输入图像描述


推荐阅读