GridView 表格类布局


GridView 在构建是,有两种方式
1 SliverGridDelegateWithFixedCrossAxisCount

 mainAxisSpacing:主轴方向的间距。crossAxisSpacing:横轴方向子元素的间距。gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:4, // 每行几个childAspectRatio: 1 //宽高比为1),
class MyGridView2 extends StatelessWidget {@overrideWidget build(BuildContext context) {// TODO: implement buildreturn GridView(padding: EdgeInsets.zero,gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount:4,childAspectRatio: 1 //宽高比为1),children: <Widget>[Container(width: double.infinity,color: Colors.blue,alignment: Alignment.center,child: Text("1",style: TextStyle(fontSize: 50,color: Colors.white),),),Container(width: double.infinity,color: Colors.red,alignment: Alignment.center,child: Text("2",style: TextStyle(fontSize: 50,color: Colors.white),),),Container(width: double.infinity,color: Colors.yellow,alignment: Alignment.center,child: Text("3",style: TextStyle(fontSize: 50,color: Colors.white),),),Container(width: double.infinity,color: Colors.green,alignment: Alignment.center,child: Text("4",style: TextStyle(fontSize: 50,color: Colors.white),),),Container(width: double.infinity,color: Colors.pink,alignment: Alignment.center,child: Text("5",style: TextStyle(fontSize: 50,color: Colors.white),),),Container(width: double.infinity,color: Colors.deepPurple,alignment: Alignment.center,child: Text("6",style: TextStyle(fontSize: 50,color: Colors.white),),),],);}
}

2 SliverGridDelegateWithMaxCrossAxisExtent

gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(maxCrossAxisExtent: 120.0,  // 每一个的宽度 ,但最后所有组件的宽度还是会平分的,这个值 起参考作用childAspectRatio: 1.0 //宽高比为1),
class MyGridView1 extends StatelessWidget {@overrideWidget build(BuildContext context) {// TODO: implement buildreturn GridView(padding: EdgeInsets.zero,gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(maxCrossAxisExtent: 120.0,childAspectRatio: 1.0 //宽高比为1),children: <Widget>[Icon(Icons.ac_unit),Icon(Icons.airport_shuttle),Icon(Icons.all_inclusive),Icon(Icons.beach_access),Icon(Icons.cake),Icon(Icons.free_breakfast),],);}
}

3 GridView.count 是 SliverGridDelegateWithFixedCrossAxisCount的快捷构建方式


class MyGridView3 extends StatelessWidget {@overrideWidget build(BuildContext context) {// TODO: implement buildreturn GridView.count(crossAxisCount:5,childAspectRatio: 0.5, //宽高比为1,children: <Widget>[Icon(Icons.ac_unit),Icon(Icons.airport_shuttle),Icon(Icons.all_inclusive),Icon(Icons.beach_access),Icon(Icons.cake),Icon(Icons.free_breakfast),],);}
}

4 GridView.extent 是 SliverGridDelegateWithMaxCrossAxisExtent 的快捷构建方式

class MyGridView4 extends StatelessWidget {@overrideWidget build(BuildContext context) {// TODO: implement buildreturn GridView.extent(maxCrossAxisExtent:300,childAspectRatio: 1, //宽高比为1,children: <Widget>[Icon(Icons.ac_unit),Icon(Icons.airport_shuttle),Icon(Icons.all_inclusive),Icon(Icons.beach_access),Icon(Icons.cake),Icon(Icons.free_breakfast),],);}
}

5 GridView.builder

上面我们介绍的GridView都需要一个widget数组作为其子元素,这些方式都会提前将所有子widget都构建好,所以只适用于子widget数量比较少时,当子widget比较多时,我们可以通过GridView.builder来动态创建子widget。GridView.builder 必须指定的参数有两个:

GridView.builder(...required SliverGridDelegate gridDelegate, required IndexedWidgetBuilder itemBuilder,
)

class MyGridView5 extends StatefulWidget {@overrideState<MyGridView5> createState() => MyGridView5State();
}class MyGridView5State extends State<MyGridView5> {List<IconData> _icons = []; //保存Icon数据@overridevoid initState() {super.initState();// 初始化数据_retrieveIcons();}@overrideWidget build(BuildContext context) {return GridView.builder(gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, //每行三列childAspectRatio: 1.0, //显示区域宽高相等),itemCount: _icons.length,itemBuilder: (context, index) {//如果显示到最后一个并且Icon总数小于200时继续获取数据if (index == _icons.length - 1 && _icons.length < 200) {print("${index}");_retrieveIcons();}return Icon(_icons[index]);},);}//模拟异步获取数据void _retrieveIcons() {Future.delayed(Duration(milliseconds: 200)).then((e) {setState(() {_icons.addAll([Icons.ac_unit,Icons.airport_shuttle,Icons.all_inclusive,Icons.beach_access,Icons.cake,Icons.free_breakfast,]);});});}
}

Flutter - GridView相关推荐

  1. Flutter GridView 组件 以及动态 GridView

    文章目录 一. Flutter 列表组件概述 二. Flutter GridView 组件的常用参数 三. Flutter GridView.count 实现网格布局 四. Flutter GridV ...

  2. flutter GridView 九宫格

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 免费开源 关注 你不会迷路 [x3]系列文章 ...

  3. flutter -------- GridView的使用

    使用GridView将widget放置为二维列表. GridView提供了两个预制list,或者您可以构建自定义网格.当GridView检测到其内容太长而不适合渲染框时,它会自动滚动. GridVie ...

  4. Flutter——(GridView)使用教程

    GridView简介: 可以创建网格列表视图:主要通过Count.extent.custom.builder构造列表.有内边距.是否反向.滑动控制器等属性. 四个属性使用场景,Count.extent ...

  5. Flutter GridView禁止滑动

    Flutter 中的GridView禁止用户上下滑动可以使用physics属性 physics: const NeverScrollableScrollPhysics() 更多资源请访问: 超详细图文 ...

  6. flutter gridview 固定高度_Flutter +携程=?

    目录 主要页面,包括首页.搜索.旅拍和我的四个主页面 依赖库 实际效果 主要页面 整体框架采用PageView + BottomNavigationBar ,每个页面的状态保存采用AutomaticK ...

  7. Flutter GridView详解

    GridView GridView常用构造 GridView 构造函数 GridView.count 构造函数 分析和使用 GridView.extent 构造函数 分析和使用 GridView.bu ...

  8. flutter GridView和Wrap

    GridView有2种gridDelegate: [记录小嵌套冲突的问题,SingleChildScrollView,ListView,GrilView嵌套问题解决,子布局添加属性] physics: ...

  9. flutter - GridView 网格布局,以及设置子元素的间距和大小

    基础的 GridView 布局 参数 说明 gridDelegate 对子元素进行修饰,由于SliverGridDelegate 是一个抽象类, 找它的实现类有 [SliverGridDelegate ...

最新文章

  1. Pyhton 内置 itertools 模块chain、accumulate、compress、drop、take等函数使用
  2. eclipse team 没有svn
  3. 求两个有序数组的中位数或者第k小元素
  4. python学习笔记(IO模型)
  5. spring boot分环境导出自定义xml配置
  6. ICLR 2017 | Attention 和 Memory Networks
  7. tensorflow系列之1:加载数据
  8. matlab 传递函数 响应,matlab:知道传递函数G,怎么画出阶跃响应?
  9. 运算符重载——算术运算符重载
  10. jQuery→简介引入、jQuery类数组对象$()与DOM对象、各种选择器、attr()、html() 、text()、val()
  11. QT界面窗口的显示和隐藏,关闭
  12. BUUCTF[SCTF2019]Who is he题解
  13. 【Excel】如何去掉编辑栏
  14. Vmware 8里运行冒险岛097——提取Vmware Tools源文件
  15. MySQL高级:索引优化之防止索引失效
  16. 时尚手表品牌PaulHewitt,手表手链超时尚品牌礼物
  17. PMI-ACP证书续证需要多少费用?
  18. lstm对时间数据的预测作用(多变量对多变量预测)
  19. ArcGIS在线应用介绍(10)旧金山犯罪地图
  20. r语言软件GDINA_finTech MSc代做、代写Python程序语言、代写MSc program、代做Python设计帮做C/C++编程|代写R语言...

热门文章

  1. 用CSS控制浏览器滚动条样式源代码
  2. Axure 点图片外区域即隐藏_学英语还可以这么有趣?快陪孩子一起找图片吧!(可打印)...
  3. HDU 3271 SNIBB(数位DP+构造)
  4. 快讯 | 谷歌AI实验室DeepMind CEO称:AI未来也许会拥有自我意识;国内首个自主研发髋膝一体骨科手术机器人上市
  5. 使用JS自动从服务器端下载文件到本地
  6. 生鲜企业为什么要使用蔬菜配送系统?
  7. 职场人:薪资该谈论吗?
  8. C++ 对象模型初探
  9. babel进阶用法之处理json文件
  10. mysql 备注 部分乱码_mysql备注乱码解决之道