GridView创建网格列表主要有下面三种方式

1、可以通过GridView.count 实现网格布局    一行的 Widget 数量
  1. class HomePage extends StatelessWidget {
  2. const HomePage({Key? key}) : super(key: key);
  3. List<Widget> _getListData() {
  4. List<Widget> list = [];
  5. for (var i = 0; i < 200; i++) {
  6. list.add(Container(
  7. alignment: Alignment.center,
  8. color: Colors.blue,
  9. child: Text(
  10. '这是第$i条数据',
  11. style: const TextStyle(color: Colors.white, fontSize: 20),
  12. ),
  13. // height: 400, //设置高度没有反应
  14. ));
  15. }
  16. return list;
  17. }
  18. @override
  19. Widget build(BuildContext context) {
  20. return GridView.count(
  21. crossAxisSpacing: 10.0, //水平子 Widget 之间间距
  22. mainAxisSpacing: 20.0, //垂直子 Widget 之间间距
  23. padding: const EdgeInsets.all(10),
  24. crossAxisCount: 2, //一行的 Widget 数量
  25. childAspectRatio: 2, //宽度和高度的比例
  26. children: _getListData(),
  27. );
  28. }
  29. }
2、可以通过GridView.extent 实现网格布局    视图中每个单元格在网格交叉轴上最大的尺寸
  1. class HomePage5 extends StatelessWidget {
  2. const HomePage5({Key? key}) : super(key: key);
  3. List<Widget> _getListData() {
  4. List<Widget> list = [];
  5. for (var i = 0; i < 200; i++) {
  6. list.add(Container(
  7. alignment: Alignment.center,
  8. color: Colors.blue,
  9. child: Text(
  10. '这是第$i条数据',
  11. style: const TextStyle(color: Colors.white, fontSize: 20),
  12. ),
  13. // height: 400, //设置高度没有反应
  14. ));
  15. }
  16. return list;
  17. }
  18. @override
  19. Widget build(BuildContext context) {
  20. return GridView.extent(
  21. crossAxisSpacing: 10.0, //水平子 Widget 之间间距
  22. mainAxisSpacing: 20.0, //垂直子 Widget 之间间距
  23. padding: const EdgeInsets.all(10),
  24. childAspectRatio: 2, //宽度和高度的比例
  25. maxCrossAxisExtent: 400, //视图中每个单元格在网格交叉轴上最大的尺寸
  26. children: _getListData(),
  27. );
  28. }
  29. }
3、通过GridView.builder实现动态网格布局
(1)SliverGridDelegateWithFixedCrossAxisCount         Flutter中用于创建具有固定列数的网格布局
  1. class MyApp4 extends StatelessWidget {
  2. MyApp4({Key? key}) : super(key: key) {
  3. print(ListText);
  4. }
  5. Widget _initListData(context, index) {
  6. return Container(
  7. decoration: BoxDecoration(
  8. color: Color.fromARGB(255, 181, 192, 27), //背景颜色
  9. border: Border.all(
  10. //边框
  11. color: Colors.red, //边框颜色
  12. width: 1.0),
  13. borderRadius: BorderRadius.circular(20), //圆角
  14. ),
  15. child: Column(children: [
  16. Image.network(ListText[index]["imageUrl"],height: 100,),
  17. const SizedBox(height: 10,),
  18. Text(ListText[index]["title"]),
  19. ]),
  20. );
  21. }
  22. @override
  23. Widget build(BuildContext context) {
  24. return GridView.builder(
  25. itemCount: ListText.length, //数组长度
  26. gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
  27. crossAxisSpacing: 10.0, //水平子 Widget 之间间距
  28. mainAxisSpacing: 10.0, //垂直子 Widget 之间间距
  29. crossAxisCount: 2, //一行的 Widget 数量
  30. childAspectRatio: 2, //宽度和高度的比例
  31. ),
  32. itemBuilder: _initListData
  33. );
  34. }
  35. }
(2)SliverGridDelegateWithMaxCrossAxisExtent     单个网格项目或列表项的最大宽度
  1. class MyApp5 extends StatelessWidget {
  2. MyApp5({Key? key}) : super(key: key) {
  3. print(ListText);
  4. }
  5. Widget _initListData(context, index) {
  6. return Container(
  7. decoration: BoxDecoration(
  8. color: Color.fromARGB(255, 181, 192, 27), //背景颜色
  9. border: Border.all(
  10. //边框
  11. color: Colors.red, //边框颜色
  12. width: 1.0),
  13. borderRadius: BorderRadius.circular(20), //圆角
  14. ),
  15. child: Column(children: [
  16. Image.network(ListText[index]["imageUrl"],height: 100,),
  17. const SizedBox(height: 10,),
  18. Text(ListText[index]["title"]),
  19. ]),
  20.  
  21. );
  22. }
  23. @override
  24. Widget build(BuildContext context) {
  25. return GridView.builder(
  26. itemCount: ListText.length, //数组长度
  27. gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
  28. crossAxisSpacing: 10.0, //水平子 Widget 之间间距
  29. mainAxisSpacing: 10.0, //垂直子 Widget 之间间距
  30. childAspectRatio: 2, //宽度和高度的比例
  31. maxCrossAxisExtent: 800, //这个属性的作用是定义单个网格项目或列表项的最大宽度 必须
  32. ),
  33. itemBuilder: _initListData
  34. );
  35. }
  36. }
map遍历
  1. class myApp5 extends StatelessWidget {
  2. myApp5({super.key});
  3. List<String> _list = [];
  4.  
  5. void putList() {
  6. for (int i = 0; i < 20; i++) {
  7. _list.add("列表$i");
  8. }
  9. }
  10.  
  11. @override
  12. Widget build(BuildContext context) {
     putList(); //调方法
  1. return ListView(
  2. children: _list.map((e) {
  3. return ListTile(
  4. title: Text(e),
  5. );
  6. }).toList(),
  7. );
  8. }
  9. }

7、Flutter GridView网格布局组件(遍历)的更多相关文章

  1. flutter GridView 网格布局

    当数据量很大的时候用矩阵方式排列比较清晰.此时我们可以用网格列表组件 GridView 实 现布局. GridView 创建网格列表有多种方式,常用有以下两种. 1.可以通过 GridView.cou ...

  2. flutter网格布局之GridView组件

    前面总结了使用ListView来实现列表,但是,有的时候,数据量很大,需要使用矩阵方式排列才能更清晰的展示数据,在flutter中,可以使用网格列表组件GridView来实现这个布局. GridVie ...

  3. Flutter——GridView组件(网格列表组件)

    GridView组件的常用参数: 名称 类型 说明 scrollDirection Axis 滚动方法 padding EdgeInsetsGeometry 内边距 resolve bool 组件反向 ...

  4. 【Flutter学习】页面布局之基础布局组件

    一,概述 Flutter中拥有30多种预定义的布局widget,常用的有Container.Padding.Center.Flex.Row.Colum.ListView.GridView.按照< ...

  5. 【Flutter学习】基本组件之基本网格Gradview组件

    一,概述 数据量很大的时用矩阵方式排列比较清晰,此时用网格列表组件,即为GridView组件,可实现多行多列的应用场景. 使用GridView创建网格列表有多种方式: GridView.count 通 ...

  6. Android开发10.3:UI组件GridView网格视图

    GridView(网格视图) 概述 GridView用于在界面上按行.列分布的方式来显示多个组件         GridView和ListView有共同的父类 : AbsListView       ...

  7. 技术胖Flutter第三季-18布局CardWidget 卡片布局组件

    技术胖Flutter第三季-18布局CardWidget 卡片布局组件 博客地址: https://jspang.com/post/flutter3.html#toc-420 最外面是Card布局,里 ...

  8. 【Flutter实战】六大布局组件及半圆菜单案例

    老孟导读:Flutter中布局组件有水平 / 垂直布局组件( Row 和 Column ).叠加布局组件( Stack 和 IndexedStack ).流式布局组件( Wrap )和 自定义布局组件 ...

  9. GridLayout(网格布局)

    常用属性: 排列对齐: ①设置组件的排列方式:  android:orientation=""     vertical(竖直,默认)或者horizontal(水平) ②设置组件的 ...

  10. Android开发自学笔记(Android Studio)—4.1布局组件

    一.引言 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.在Android4.0之前,我们通常说 ...

随机推荐

  1. 2006年piner的面试题

    数据库切换日志的时候,为什么一定要发生检查点?这个检查点有什么意义?表空间管理方式有哪几种,各有什么优劣.本地索引与全局索引的差别与适用情况.一个表a varchar2(1),b number(1), ...

  2. CF1364B

    题目简化和分析: 这题没啥好说的,找其绝对值最大,也就是找到每一个山峰山谷. 这样不仅满足选择的个数最少,并且值最大. 正确性证明: 若 \(a\le b\le c\) \(|a-b|+|b-c|=( ...

  3. Unity EditorWindow GUI裁剪

    Unity2017,想在编辑器自己实现一个类似TreeView的东西 public void OnGUI(Rect rect) { // ... for (int i = 0; i < 100; ...

  4. Kafka 在分布式系统中的 7 大应用场景

    Kafka 介绍 Kafka 是一个开源的分布式流式平台,它可以处理大量的实时数据,并提供高吞吐量,低延迟,高可靠性和高可扩展性.Kafka 的核心组件包括生产者(Producer),消费者(Cons ...

  5. mac os 升级到13后,系统免密失败

    # sudo vim /etc/ssh/ssh_config # 添加以下内容 PubkeyAcceptedKeyTypes +ssh-rsa

  6. 线上JAVA应用平稳运行一段时间后出现JVM崩溃问题

    一.问题是怎么发现的 系统是一个定时任务系统,需要定时执行业务代码,业务代码主要是访问MYSQL数据库和缓存进行操作,该开始启动,系统日志一切正常,但是运行一段时间到凌晨后,系统就自动崩溃了,java ...

  7. GCD Inside: GCD 数据结构

    1 OS_object OS_object由下面宏OS_OBJECT_DEC_BASE扩展而来: // 1. os/object.h OS_OBJECT_DECL_BASE(object, NSObj ...

  8. “技能兴鲁”职业技能大赛-网络安全赛项-学生组初赛 Crypto WP

    babyRSA 查看代码 from gmpy2 import * from Crypto.Util.number import * flag = 'flag{I\'m not gonna tell y ...

  9. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-30-处理日历时间控件-下篇

    1.简介 理想很丰满现实很骨感,在应用playwright实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这样的操 ...

  10. Mysql数据库查询之模糊查询

    一.什么是模糊查询模糊查询是根据一定的模式匹配规则,查找与指定条件相似或相符的数据.二.模糊查询实操通配符查询1.% 表示任意0个或多个字符形式一: select 查询字段 from 表名 where ...