一般 方法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,),
)