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

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

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. Go 常用命令介绍

    Go 常用命令 目录 Go 常用命令 一.Go 常用命令 1.1 go build 1.1.1 指定输出目录 1.1.2 常用环境变量设置编译操作系统和 CPU 架构 1.1.3 查看支持的操作系统和 ...

  2. 2023.09.29 入门级 J2 模拟赛 赛后总结(尝试第一篇总结)

    T1:变换(change) 一道大水题. 赛场上想都没想就切掉了 不难发现,转换的过程只和a 和b 的二进制位有关,且不同二进制位之间无关.我们可以将a 和b 转化为二进制表示,每一位分别判断,如果这 ...

  3. mol 文件格式简单解析(v2000)

    前言 .mol 文件是常见的化学文件格式,主要包含分子的坐标.分子间的键等数据. 示例文件 下面是一个水分子的 .mol 文件 H2O APtclcactv05052315543D 0 0.00000 ...

  4. 别再吹捧什么区块链,元宇宙,Web3了,真正具有颠覆性的估计只有AI

    「感谢你阅读本文!」 别再吹捧什么区块链,元宇宙,Web3了,真正具有颠覆性的估计只有AI. 我们这个社会有这样一个特性,就是出现一个新事物,新概念,新技术,先不管是否真的现实,是否真的了解,第一件事 ...

  5. Java-全网最详细反射

    Java-反射 前言 Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象 ...

  6. zend framework 数据库操作(DB操作)总结

    (1)数据查询总结 fetchRow()这个方法返回一行,具体返回是相关数组还是什么用setFetchMode()决定fetchCol()返回第一列fetchOne()返回第一行,第一列.为一个值不是 ...

  7. mybtis-plus 出现 Wrong namespace

    今天进行项目整合,刚开始代码搬的还挺快乐的,但是到后面调试起来,头晕眼花的.记录一个基本的错误. Cause: org.apache.ibatis.builder.BuilderException:  ...

  8. JUC并发编程学习笔记(九)阻塞队列

    阻塞队列 阻塞 队列 队列的特性:FIFO(fist inpupt fist output)先进先出 不得不阻塞的情况 什么情况下会使用阻塞队列:多线程并发处理.线程池 学会使用队列 添加.移除 四组 ...

  9. 【慢SQL性能优化】 一条SQL的生命周期

    一. 一条简单SQL在MySQL执行过程 一张简单的图说明下,MySQL架构有哪些组件和组建间关系,接下来给大家用SQL语句分析 例如如下SQL语句 SELECT department_id FROM ...

  10. 基于AStyle的代码格式化脚本 [已开源]

    这是一个简单的windows端脚本 主要用于C/C++代码的格式化 可以添加到鼠标右键,直接在.C/.H文件上右键格式化代码 具体开源地址 https://gitee.com/svchao/code_ ...