Flutter GridView网格布局 几种不同的方式 神仙操作

本文深入解析Flutter中GridView的四种常用布局方法,包括GridView.count、GridView.builder结合SliverGridDelegateWithFixedCrossAxisCount、GridView.builder结合SliverGridDelegateWithMaxCrossAxisExtent及GridView.custom的使用技巧,为开发者提供丰富的网格布局实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般  方法2 和 方法 3使用的比较多

写法1

GridView.count(
      //水平子Widget之间间距
      crossAxisSpacing: 10.0,
      //垂直子Widget之间间距
      mainAxisSpacing: 10.0,
      //GridView内边距
      padding: EdgeInsets.all(0.0),
      //一行的Widget数量
      crossAxisCount: 5,
      //子Widget宽高比例
      childAspectRatio: 1.0,
      //子Widget列表
      children:widgetList(),
    );

写法2

GridView.builder(
        itemCount: datas.length,
        //SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            //横轴元素个数
            crossAxisCount: 5,
            //纵轴间距
            mainAxisSpacing: 10.0,
            //横轴间距
            crossAxisSpacing: 10.0,
            //子组件宽高长度比例
            childAspectRatio: 1.0),
        itemBuilder: (BuildContext context, int index) {
          return getItemContainer(datas[index]);
        })

写法3

GridView.builder(
      itemCount: datas.length,
      itemBuilder: (BuildContext context, int index) {
        return getItemContainer(datas[index]);
      },
      gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
        //单个子Widget的水平最大宽度
        maxCrossAxisExtent: 100,
        //水平单个子Widget之间间距
        mainAxisSpacing: 10.0,
        //垂直单个子Widget之间间距
        crossAxisSpacing: 10.0
      ),
    );

写法4 

GridView.custom(
    gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(    
        crossAxisCount: 5, 
        mainAxisSpacing: 10.0, 
        crossAxisSpacing: 10.0, 
    ),
    childrenDelegate: SliverChildBuilderDelegate((context, position) {
         return getItemContainer(datas[position]);
     }, 
    childCount: datas.length,),
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值