Flutter GridView Demo

本文详细介绍了如何在Flutter中使用GridView构建动态网格视图,包括数据加载、单元格布局及响应式设计。通过实例展示了GridView的灵活性和强大的适应性。

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

GridView

代码

///2019.4.20 By GX
Widget _buildRechargeGridView() {
    List<Widget> list = [];
    for (int i = 0; i < (infoList == null ? 0 : this.infoList.length); i++) {
      ///初始化每个单元
      Widget view = _buildGridUnit();
      list.add(view);
    }

    return Container(
        height: (MediaQuery.of(context).size.width) / 3 + 44,
        width: MediaQuery.of(context).size.width,
        padding: EdgeInsets.only(
            left: getWidthFromRatio(context, 20),
            right: getWidthFromRatio(context, 20)),
        child: GridView(
            ///机型适配,如有需要,变更SliverGridDelegateWithFixedCrossAxisCount
            gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
            maxCrossAxisExtent: (MediaQuery.of(context).size.width) / 3,
            mainAxisSpacing: 22,
            crossAxisSpacing: 20,
            childAspectRatio: 2,
          ),
          children: list,
        ),
      );
  }

代码说明

infoList

infoList 是对GridView每个单元的初始化信息的List。在您的代码中应该是从网络获取或是其他方式。

_buildGridUnit()

_buildGridUnitreturn一个 widget的私有函数,根据需求在函数中创建GridView的通用单元布局

属性说明

SliverGridDelegateWithMaxCrossAxisExtent

const SliverGridDelegateWithMaxCrossAxisExtent({
    @required this.maxCrossAxisExtent, //每个Unit有多宽
    this.mainAxisSpacing = 0.0,//主轴方向间距
    this.crossAxisSpacing = 0.0,//纵轴方向间距
    this.childAspectRatio = 1.0,//主轴纵轴缩放比例
    })

SliverGridDelegateWithFixedCrossAxisCount

const SliverGridDelegateWithFixedCrossAxisCount({
    @required this.crossAxisCount,//每行几个
    this.mainAxisSpacing = 0.0,//主轴方向间距
    this.crossAxisSpacing = 0.0,//纵轴方向间距
    this.childAspectRatio = 1.0,//主轴纵轴缩放比例
    })

小坑

GridView做出来,会有滑动效果,根据UI的示意图和产品的要求,可能会需要添加解除滑动的容器

赞赏

如对您有帮助,支持我,不胜感激
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值