Flutter组件GridView使用介绍

介绍


GridView 是 Flutter 中用于创建网格布局的滚动小部件。它可以创建多列布局,并且每个网格单元可以包含一个小部件。

GridView 提供了几种构造函数来创建不同类型的网格布局:

  1. GridView:最通用的构造函数,完全自定义网格布局。
  2. GridView.builder:按需构建网格项,适用于具有大量(或无限)网格项的动态内容。
  3. GridView.count:指定网格中的列数,适用于具有固定数量列的网格。
  4. GridView.extent:指定网格中最大交叉轴范围(例如,最大列宽),适用于需要控制列宽的网格。
  5. GridView.custom:这个构造函数提供了最高级别的自定义能力,允许使用自定义的SliverGridDelegate和SliverChildDelegate。

GridView 的属性


主要属性:

  • gridDelegate:控制网格布局的结构和布局。通常使用 SliverGridDelegateWithFixedCrossAxisCount(固定列数)或 SliverGridDelegateWithMaxCrossAxisExtent(固定最大列宽)。
  • children:网格中显示的小部件列表。只在使用默认构造函数 GridView 时使用。
  • scrollDirection:滚动方向,可以是Axis.horizontal(水平滚动)或Axis.vertical(垂直滚动)。
  • padding:网格周围的内边距。
  • crossAxisSpacingmainAxisSpacing:网格项之间的间距。
  • childAspectRatio:网格项的宽高比。
  • shrinkWrap: 使GridView的高度适应其内容,为true时占用其内容所需的最小空间,为false时占用尽可能多的空间。

注意:如果你有一个ListView或SingleChildScrollView并且想在其中包含一个GridView,一般设置shrinkWrap: true确保GridView的高度仅基于其内容大小,而不是尝试滚动,或者包含在固定高度的容器中再或者放在Expanded中使其可以扩展,不然会报错不显示GridView!

  • physics: 定义滚动行为的物理引擎,可选值为AlwaysScrollableScrollPhysics()始终允许滚动,BouncingScrollPhysics()边缘出现弹跳效果,ClampingScrollPhysics()滚动到边缘时会自动停止,NeverScrollableScrollPhysics()静态内容不需要滚动,一般常用的是这个并且可以去除GridView的边缘滑动效果

看下图可以更好的理解:

在这里插入图片描述
图片来源:https://juejin.cn/post/6844903889502732295

使用

1.GridView
默认构造方法,当子项数量较少且固定时,使用children属性是合适的。但当子项数量较大或动态生成时,考虑使用GridView.builder构造函数来提高性能

GridView(gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, // 定义网格列数mainAxisSpacing: 10.0, // 主轴(垂直方向或水平方向)间距crossAxisSpacing: 10.0, // 交叉轴(水平或垂直方向)间距childAspectRatio: 1.0, // 子项的宽高比),children: <Widget>[ItemWidget(),ItemWidget(),// ...],
)

2.GridView.builder:
适用于大量数据的情况,它会根据需要逐个构建子项,而不是一次性构建整个网格。有助于提高性能。

GridView.builder(gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2,),itemBuilder: (BuildContext context, int index) {return ItemWidget(index); // 通过索引构建子项},itemCount: Data.length, // 数据项的数量
)

3.GridView.count:
适用于知道子项数量且数量不会变化的情况。

GridView.count(crossAxisCount: 2,children: List.generate(10,(index) => ItemWidget(index),),
)

4.GridView.extent:
适用于每个子项具有相同的最大主轴扩展的情况。

GridView.extent(maxCrossAxisExtent: 200,children: List.generate(10,(index) => ItemWidget(index),),
)

5.GridView.custom:
提供了最大的灵活性(新手慎用),适用于构建定制的网格布局,它使用SliverChildBuilderDelegate来构建子项。

GridView.custom(gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3,),childrenDelegate: SliverChildBuilderDelegate((BuildContext context, int index) {return ItemWidget(index);},childCount: Data.length,),
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/613200.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么在unity3D工程中导入Newtonsoft.Json

打开 Unity 编辑器。 转到菜单栏的 “Window”&#xff08;窗口&#xff09;选项&#xff0c;然后选择 “Package Manager”&#xff08;包管理器&#xff09; 在搜索框中输入 “Newtonsoft Json” 进行搜索。 注意&#xff1a;要选择Unity Registry 在搜索结果中&#xf…

GC6109——双通道5V低电压步进电机驱动芯片,低噪声、低振动,应用摄像机,机器人等产品中

GC6109是双通道5V低电压步进电机驱动器&#xff0c;具有低噪声、低振动的特点&#xff0c;特别适用于相机的变焦和对焦系统&#xff0c;万向节和其他精密、低噪声的STM控制系统。该芯片为每个通道集成了256微步驱动器。带SPl接口&#xff0c;用户可以方便地调整驱动器的参数。内…

SpringCloudAlibaba微服务架构实战派上下册技术交流!

另外我的新书RocketMQ消息中间件实战派上下册&#xff0c;在京东已经上架啦&#xff0c;目前都是5折&#xff0c;非常的实惠。 https://item.jd.com/14337086.html​编辑https://item.jd.com/14337086.html “RocketMQ消息中间件实战派上下册”是我既“Spring Cloud Alibaba微…

Nginx介绍与安装

目录 nginx服务 1、Nginx 介绍 2、为什么选择 nginx 3、IO多路复用 1、I/O multiplexing【多并发】 2、一个请求到来了&#xff0c;nginx使用epoll接收请求的过程是怎样的? 3、异步&#xff0c;非阻塞 4、nginx 的内部技术架构 5、yum安装部署nginx和配置管理 1.获取…

PHP企业物资管理系统源码带文字安装教程

PHP企业物资管理系统源码带文字安装教程 技术架构 主要框架 : PHP7.0 laravel5.4  mysql5.5.36 composer1.3.2(依赖管理) 前端 : jquery bootstrap jstree&#xff08;树形结构&#xff09; echart&#xff08;图表&#xff09; layer&#xff08;弹出层&#xff09; 企…

JavaScript递归技巧的前世今生:深入解析递归及其与堆栈的关系

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ ✨ 前言 递归作为一种能够用简洁的方式定义复杂对象的编程技巧,在计算机科学中被广泛应用。它借助系…

OpenHarmony南向之LCD显示屏

OpenHarmony南向之LCD显示屏 概述 LCD&#xff08;Liquid Crystal Display&#xff09;驱动&#xff0c;通过对显示器上下电、初始化显示器驱动IC&#xff08;Integrated Circuit&#xff09;内部寄存器等操作&#xff0c;使其可以正常工作。 HDF Display驱动模型 LCD器件驱…

示例说明 Makefile 中的 $(@F),及其用法示例$$dir $@ $< $^ %.c

备忘一个不错的开源编辑器CudaText 下载网址&#xff1a; CudaText - Browse /release at SourceForge.net CudaText 主页&#xff1a; CudaText - Home 1&#xff0c;含义及验证 在 Makefile 中&#xff0c;$(F) 表示当前规则的目标文件名&#xff08;不包括路径部分&…

都2024年了,FP卖家还不知道AB站怎么玩?

自从开始写FP独立站各种运营技巧和黑科技的文章&#xff0c;经常都会有朋友来私V&#xff0c;询问怎么进行AB站跳转。 可能是现在平台对于FP商家的限制越来越多&#xff0c;再加上如今到处都是“内卷”的电商环境&#xff0c;让FP商家生存越来越艰难&#xff0c;今天就着重讲一…

【踩坑】JDK1.8 AudioSystem 无法关闭流的问题

文章目录 一、前言二、开始狼人杀嫌疑人1&#xff1a;嫌疑人2&#xff1a; 三、复盘Jdk8原生bug解决方法和原理解析 一、前言 做了一个基于文字转语言的小接口&#xff0c;想删除本地wav文件来着&#xff0c;结果发现删除不了。 很明显被占用了&#xff0c;还是被Java占用了……

Linux内核源码分析(强烈推荐收藏!)

前言&#xff1a;Linux内核是由林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;在1991年开始开发的。当时他为了得到一个可以运行UNIX操作系统的个人计算机&#xff0c;开始编写一个操作系统内核&#xff0c;并将其命名为Linux。随后&#xff0c;越来越多的开发者加入到项…

【论文】:ALOHA双手远程操作手臂

对于机器人来说&#xff0c;诸如穿扎带或插入电池等精细操作任务是众所周知的困难&#xff0c;因为它们需要精确度、接触力的仔细协调以及闭环视觉反馈。执行这些任务通常需要高端机器人、精确的传感器或仔细的校准&#xff0c;这些可能既昂贵又难以设置。学习能否使用低成本且…

计算机组成原理之计算机硬件发展和计算机系统的组成

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

算法第4版 第2章排序

综述&#xff1a;5个小节&#xff0c;四种排序应用&#xff0c;初级排序、归并排序、快速排序、优先队列 2.1.初级排序 排序算法模板&#xff0c;less(), exch(), 排序代码在sort()方法中&#xff1b; 选择排序&#xff1a;如升序排列&#xff0c;1.找到数组中最小的元素&am…

llama_index 创始人为我们展示召回提升策略(提升15%)

用句子向量替换为句子向量 句子检索&#xff0c;将句子转化为向量。在检索的过程中&#xff0c;假如句子命中&#xff0c;则将句子周围的内容也当做检索内容。 对比句子检索和之前的按块去做切分的检索。可以看到&#xff0c;内容的相关性提升了8%&#xff0c; 构建数据的时候…

如何利用ChatGPT快速生成月报?

随着每个月的结束&#xff0c;个人和团队经常需要编写月报来回顾和总结。这项任务通常消耗大量时间和精力。幸运的是&#xff0c;借助ChatGPT&#xff0c;这个过程可以变得更加简单和高效。接下来&#xff0c;我将详细介绍如何利用ChatGPT快速生成月报&#xff0c;从而帮助你节…

NSSCTF Interesting_include

开启环境: 通过审计,我们可知: flag在flag.php中,可以利用php中伪协议 payload:?filterphp://filter/readconvert.base64-encode/resourceflag.php 将其base64解码就是flag. NSSCTF{3dc54721-be9e-444c-8228-7133fba76ad4}

大数据系列之:腾讯云服务器性能和价格比较

大数据系列之&#xff1a;腾讯云服务器性能和价格比较 一、磁盘性能和价格比较二、高性能云硬盘三、ssd云硬盘四、极速型ssd云硬盘五、增强型ssd云硬盘六、查看腾讯云服务器价格 一、磁盘性能和价格比较 磁盘名称高性能ssd云硬盘极速型ssd云硬盘增强型ssd云硬盘规格500g 5800 …

Navicat 技术干货 | 为 MySQL 表选择合适的存储引擎

MySQL 是最受欢迎的关系型数据库管理系统之一&#xff0c;提供了不同的存储引擎&#xff0c;每种存储引擎都旨在满足特定的需求和用例。在优化数据库和确保数据完整性方面&#xff0c;选择合适的存储引擎是至关重要的。今天&#xff0c;我们将探讨为 MySQL 表选择合适的存储引擎…

【BetterBench】2024年都有哪些数学建模竞赛和大数据竞赛?

2024年每个月有哪些竞赛&#xff1f; 2024年32个数学建模和数据挖掘竞赛重磅来袭&#xff01;&#xff01;&#xff01; 2024年数学建模和数学挖掘竞赛时间目录汇总 一月 &#xff08;1&#xff09;2024年第二届“华数杯”国际大学生数学建模竞赛 报名时间&#xff1a;即日起…