Flutter--GridView组件
原创
©著作权归作者所有:来自51CTO博客作者wx5ba8dc11102bc的原创作品,请联系作者获取转载授权,否则将追究法律责任
属性
属性
| 释义
|
scrollDirection
| 滚动方向
|
padding
| 内边距
|
resolve
| 组件反向排序
|
crossAxisSpacing
| 控件水平间距
|
mainAxisSpacing
| 控件垂直边距
|
crossAxisCount
| 每行控件数量
|
childAspectRatio
| 每个控件的宽高比
|
gridDelefate
| 一般在GridView.builder中使用SliverGridDelegateWithFixedCrossAxisCount来使用上述属性
|
通过GridView.count创建网格布局
class HomeContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GridView.count(
crossAxisCount: 2, //网格布局的列数
children: <Widget>[
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本'),
Text('这是一个文本')
],
);
}
使用GridVIew.count创建动态网格
class HomeContent extends StatelessWidget {
List<Widget> _getListData() {
List<Widget> list = new List();
for (var i = 0; i < 20; i++) {
list.add(Container(
alignment: Alignment.center,
child: Text("$i"),
));
}
return list;
}
@override
Widget build(BuildContext context) {
return GridView.count(
crossAxisCount: 2,
crossAxisSpacing: 20.0,
mainAxisSpacing: 20.0,
childAspectRatio: 0.7,
children: this._getListData(),
padding: EdgeInsets.all(10),
);
}
}
使用GridView.builder创建网格
class HomeContent extends StatelessWidget {
Widget _getListData(context, index) {
return Container(
child: Column(
children: <Widget>[
Image.network(listData[index]["imageUrl"]),
SizedBox(height: 12),
Text(
listData[index]["title"],
textAlign: TextAlign.center,
style: TextStyle(fontSize: 20),
)
],
),
);
}
@override
Widget build(BuildContext context) {
return GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 20.0,
mainAxisSpacing: 20.0,
),
itemBuilder: this._getListData,
itemCount: listData.length,
);
}
}