GridView使用,以及参数说明:
代码演示:
import 'package:flutter/material.dart'; class OnlineMall extends StatefulWidget { @override _OnlineMall createState() => _OnlineMall(); } class _OnlineMall extends State<OnlineMall> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('在线商城'), centerTitle: true, ), body: renderBody(), ); } renderBody() { return GridView.count( crossAxisCount: 2, padding: EdgeInsets.all(20.0), crossAxisSpacing: 20.0, mainAxisSpacing: 20.0, childAspectRatio: 0.7, children: <Widget>[ Container( color: Colors.white70, child: Column( children: <Widget>[ Image.network('http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'), SizedBox(height: 12), Text('OPPO Reno3 Pro双模5G骁龙') ], ), ), Container( color: Colors.white70, child: Column( children: <Widget>[ Image.network('http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'), SizedBox(height: 12), Text('OPPO Reno3 Pro双模5G骁龙') ], ), ), Container( color: Colors.white70, child: Column( children: <Widget>[ Image.network('http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'), SizedBox(height: 12), Text('OPPO Reno3 Pro双模5G骁龙') ], ), ), Container( color: Colors.white70, child: Column( children: <Widget>[ Image.network('http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'), SizedBox(height: 12), Text('OPPO Reno3 Pro双模5G骁龙') ], ), ), Container( color: Colors.white70, child: Column( children: <Widget>[ Image.network('http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg'), SizedBox(height: 12), Text('OPPO Reno3 Pro双模5G骁龙') ], ), ) ], ); } }
效果:
通过build方式动态实现网格:
代码:
import 'package:flutter/material.dart'; import 'package:flutter_app_zfy/res/istData.dart'; class OnlineMall extends StatefulWidget { @override _OnlineMall createState() => _OnlineMall(); } class _OnlineMall extends State<OnlineMall> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('在线商城'), centerTitle: true, ), body: renderBody(), ); } renderBody() { return GridView.builder( itemCount: listData.length, itemBuilder: this._getListData, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, crossAxisSpacing: 20.0, mainAxisSpacing: 20.0, childAspectRatio: 0.7, ), ); } Widget _getListData(context, index) { return Container( color: Colors.white70, child: Column( children: <Widget>[ Image.network(listData[index]['imageUrl']), SizedBox(height: 12), Text(listData[index]['title']) ], ), ); } }
List listData = [ { 'title': 'OPPO Reno3 Pro双模5G骁龙', 'source': 'JD', 'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg' }, { 'title': 'OPPO Reno3 Pro双模5G骁龙', 'source': 'JD', 'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg' }, { 'title': 'OPPO Reno3 Pro双模5G骁龙', 'source': 'JD', 'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg' }, { 'title': 'OPPO Reno3 Pro双模5G骁龙', 'source': 'JD', 'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg' }, { 'title': 'OPPO Reno3 Pro双模5G骁龙', 'source': 'JD', 'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg' }, { 'title': 'OPPO Reno3 Pro双模5G骁龙', 'source': 'JD', 'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg' }, { 'title': 'OPPO Reno3 Pro双模5G骁龙', 'source': 'JD', 'imageUrl': 'http://gju2.alicdn.com/tps/i2/O1CN01qAE6Bm2L4FrYasvlA_!!0-juitemmedia.jpg' } ];
效果展示: