Flutter折腾学习成长记(22)

这篇博客介绍了Flutter中两种常用的GridView布局方式,用于商品布局。首先讲解了GridView.count,通过指定一行的Widget数量实现网格布局,并展示了基本用法。接着详细阐述了GridView.builder,利用itemBuilder动态生成Widget,配合SliverGridDelegateWithFixedCrossAxisCount进行更灵活的布局控制。博客还涵盖了GridView的重要属性,如scrollDirection、padding、childAspectRatio等,并提供了示例代码进行演示。

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

今日目标

今天来学习前两天剩下的最后一种布局,网格布局,主要用于商品布局中。今天主要学习两种常用的,GridView.count实现网格布局,GridView.builder实现网格布局。

GridView常用属性

名称类型说明
scrollDirectionAxis滚动方法
paddingEdgeInsets内边距
resolvebol组件反向排序
crossAxisSpacingdouble水平子Widget之间间距
mainAxisSpacingdouble垂直子Widget之间间距
crossAxisCountint一行Widget数量
childAspectRationdouble子Widget宽高比例
children*[]
gridDelegateSliverGridelgateWithFixedCrossAxisCountSliverGridDelegateWithMaxCrossAxisExtent控制布局主要用在GridView.builder里面

GridView.count

class HomeContent extends StatelessWidget {@overrideWidget build(BuildContext context) {return GridView.count(children: <Widget>[Text('this is line 1'),Text('this is line 1'),Text('this is line 1'),Text('this is line 1'),Text('this is line 1'),],crossAxisCount: 3,);}
} 
class HomeContent extends StatelessWidget {List<Widget> _getListData() {List<Widget> list = [];for (var i = 0; i < 20; i++) {list.add(Container(alignment: Alignment.center,child: Text('这是第$i条数据',style: TextStyle(color: Colors.red[500], fontSize: 12 + i*1.0),),color: Colors.blue[i * 100],// height: 20.0, // 这里设置高度是没有效果的));}return list;}@overrideWidget build(BuildContext context) {return GridView.count(children: this._getListData(),crossAxisCount: 3, // 控制一行有多少个WidgetcrossAxisSpacing: 20.0,mainAxisSpacing: 10.0,padding: EdgeInsets.all(10.0),childAspectRatio: 0.7,);}
} 

GridView.builder

class HomeContent extends StatelessWidget {Widget _getListData(context, i) {return Container(alignment: Alignment.center,child: Text('这是第$i条数据',style: TextStyle(color: Colors.red[500], fontSize: (12 + i * 1.0).toDouble()),),color: Colors.blue[i * 100],// height: 20.0, // 这里设置高度是没有效果的);}@overrideWidget build(BuildContext context) {// TODO: implement buildreturn GridView.builder(itemCount: 20,itemBuilder: _getListData,padding: EdgeInsets.all(10.0),gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, mainAxisSpacing: 10.0, crossAxisSpacing: 10.0),);}
} 

ending

持续学习如有错误的地方还请指正谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值