题记
—— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精。


【x1】微信公众号的每日提醒 随时随记 每日积累 随心而过

【x2】各种系列的视频教程 免费开源 关注 你不会迷路

【x3】系列文章 百万 Demo 随时 复制粘贴 使用

【x4】本文章对应的讲解视频在这里


本 Demo 实现的最终效果如下:

GridView 九宫格

1 引言

GridView是常用可滚动组件之一,在Flutter中通常使用GridView构建二维网格列表,GridView创建方法有五种,描述如下

  • GridView的构造函数方法,一次性构建所有的子条目,适用于少量数据
  • GridView.builder方式来构建,懒加载模式,适用于大量数据的情况
  • GridView.count方式来构建,适用于固定列的情况,适用于少量数据 GridView.extent
    方式来构建,适用于条目有最大宽度的限制的情况,适用于少量数据的情况下
  • GridView.custom
    方式来构建,可配置子条目的排列规则也可配置子条目的渲染加载模式

2 滑动组件的公有属性

GridView也是滑动组件系列中的一个,它也有滑动组件一些公用的属性,简单描述如下:

 ///滑动方向 Axis scrollDirection = Axis.vertical,///是否滑动到底部bool reverse = false,///滑动控制器ScrollController controller,///是否使用默认的控制器bool primary,///滑动到边界时的回弹效果ScrollPhysics physics,///内边距EdgeInsetsGeometry padding,

3 通过GridView的构造函数来创建

通过GridView的构造函数来构建,通过参数children来构建GridView中使用到的所有的子条目,通过参数gridDelegate配置SliverGridDelegate来配置子条目的排列规则。

SliverGridDelegate声明为abstract抽象的,所以需要使用它的子类来构建。

SliverGridDelegate有两个直接的子类SliverGridDelegateWithFixedCrossAxisCount和SliverGridDelegateWithMaxCrossAxisExtent。

通过SliverGridDelegateWithFixedCrossAxisCount来构建一个横轴为固定数量的子条目的GridView,如图1所示。

对应代码如下:


///GridView的基本使用
class GridViewBaseUsePage extends StatefulWidget {@overrideState<StatefulWidget> createState() {return ScrollHomePageState();}
}class ScrollHomePageState extends State {@overrideWidget build(BuildContext context) {return Scaffold(appBar: new AppBar(title: Text("GridView基本使用"),),///构建九宫格数据数据body: buildGridView1(),
//      body: buildGridView2(),);}
  ///GridView 的基本使用///通过构造函数来创建Widget buildGridView1() {return GridView(///子Item排列规则gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(//横轴元素个数crossAxisCount: 3,//纵轴间距mainAxisSpacing: 10.0,//横轴间距crossAxisSpacing: 10.0,//子组件宽高长度比例childAspectRatio: 1.4),///GridView中使用的子Widegtchildren: buildListViewItemList(),);}
///GridView 的基本使用///通过custom方式来创建Widget buildGridView() {return GridView.custom(cacheExtent: 200,///子Item排列规则gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(///子Item的最大宽度maxCrossAxisExtent: 100,//纵轴间距mainAxisSpacing: 10.0,//横轴间距crossAxisSpacing: 10.0,//子组件宽高长度比例childAspectRatio: 1.4,),///子条目的构建模式childrenDelegate:///懒加载的模式SliverChildBuilderDelegate((BuildContext context, int index) {return buildListViewItemWidget(index);}));}
  List<Widget> buildListViewItemList(){List<Widget> list = [];///模拟的8条数据for (int i = 0; i < 8; i++) {list.add(buildListViewItemWidget(i));}return list;}///创建GridView使用的子布局Widget buildListViewItemWidget(int index) {return new Container(///内容剧中alignment: Alignment.center,///根据角标来动态计算生成不同的背景颜色color: Colors.cyan[100 * (index % 9)],child: new Text('grid item $index'),);}
}

其他4中创建方式请在公众号中回复 九宫格 查看


flutter GridView 九宫格相关推荐

  1. Android 控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现

    Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现 关注finddreams:http://blog.csdn.net/finddreams/articl ...

  2. Flutter GridView 组件 以及动态 GridView

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

  3. flutter 九宫格菜单_flutter GridView 九宫格

    我收集了一些学习用的资料,其中包含了很多学习,面试,中高进阶fluuter资料,还有很多视频详解,如果有同学想进一步了解,详情请看文末.也欢迎各路大神门前来装X. 1 引言 GridView是常用可滚 ...

  4. Flutter ——图片九宫格,多图片批量上传(图片选择采用官方image_picker实现,批量上传采用dio,消息提示)

    需求:实现一个九宫格的效果,要求能够多选照片. 具体描述: 1.实现类似微信九宫格,没图片的时候有一张添加图片,点击该图片可以在相册中选择,当图片未满9个的时候,该图片一直跟在最后,当图片满足9个的时 ...

  5. Flutter 实现九宫格抽奖动画效果

    一.本文实现的九宫格抽奖动画效果如下 二.主要分享下怎么一步一步来实现这个效果 源代码地址 布局可以通过GridView轻松实现,只需在数据源的第五个位置插入一个元素用来标识是开始按钮 抽奖动画的实现 ...

  6. flutter -------- GridView的使用

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

  7. Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现

    今天我们来模仿一下支付宝钱包首页中带有分割线的GridView,俗称九宫格.先上图,是你想要的效果么?如果是请继续往下看. 我们都知道ListView设置分割线是非常容易的,设置ListView的分割 ...

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

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

  9. Flutter GridView禁止滑动

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

最新文章

  1. java 对象转json json转对象
  2. idea 整合SSM(spring spring-mvc mybatis)
  3. plsql怎么查看存储过程中long变量的值_面试官:详细说下基本数据类型与装箱拆箱的过程...
  4. 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...
  5. swiper高度自适应_小程序自定义导航自适应高度
  6. 表格控件对比_小白如何开发出苏宁易购同款表格协同文档系统?
  7. linux时间管理代码,第二章、linux的时间管理
  8. 小目标检测--SNIP
  9. 来一起学习脚本语言吧,简单,高效,解放双手,感受自由!
  10. HTPPS请求 证书 解决方案
  11. Palindromic Tree——回文树【处理一类回文串问题的强力工具】
  12. allegro如何导入嘉立创可以识别的bom
  13. PHP artisan命令
  14. MATLAB中datetime函数的使用
  15. 模拟电路笔记(二)晶体三极管及放大电路
  16. 20家最具创新力的创业公司
  17. 计算机网络实验1:HTTP 代理服务器的设计与实现
  18. php博饼,2018博饼html5
  19. Restyle起来!
  20. Ardunio开发实例-线性电位计

热门文章

  1. YOLOv3 提升 5.91 mAP,IoU在目标检测中的正确打开方式
  2. 13篇京东CVPR 2019论文!你值得一读~
  3. 历史精华文章分类汇总,祝大家中秋快乐!
  4. 收藏 | 个人深度学习工作站配置指南
  5. 笔记 | 《机器学习》手推笔记更新集成学习(Boosting和随机森林)
  6. 内推 | 旷视研究院深度学习实习生招聘(含内推邮箱)
  7. python爬虫学习:电商数据分析
  8. 基础知识(五)对齐变换相关函数
  9. 复述-软考网规--云计算专题
  10. mysql c null_MySQL中NULL字段的比较问题