7、Flutter GridView网格布局组件(遍历)
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) {
return ListView(
children: _list.map((e) {
return ListTile(
title: Text(e),
);
}).toList(),
);
}
}
7、Flutter GridView网格布局组件(遍历)的更多相关文章
- flutter GridView 网格布局
当数据量很大的时候用矩阵方式排列比较清晰.此时我们可以用网格列表组件 GridView 实 现布局. GridView 创建网格列表有多种方式,常用有以下两种. 1.可以通过 GridView.cou ...
- flutter网格布局之GridView组件
前面总结了使用ListView来实现列表,但是,有的时候,数据量很大,需要使用矩阵方式排列才能更清晰的展示数据,在flutter中,可以使用网格列表组件GridView来实现这个布局. GridVie ...
- Flutter——GridView组件(网格列表组件)
GridView组件的常用参数: 名称 类型 说明 scrollDirection Axis 滚动方法 padding EdgeInsetsGeometry 内边距 resolve bool 组件反向 ...
- 【Flutter学习】页面布局之基础布局组件
一,概述 Flutter中拥有30多种预定义的布局widget,常用的有Container.Padding.Center.Flex.Row.Colum.ListView.GridView.按照< ...
- 【Flutter学习】基本组件之基本网格Gradview组件
一,概述 数据量很大的时用矩阵方式排列比较清晰,此时用网格列表组件,即为GridView组件,可实现多行多列的应用场景. 使用GridView创建网格列表有多种方式: GridView.count 通 ...
- Android开发10.3:UI组件GridView网格视图
GridView(网格视图) 概述 GridView用于在界面上按行.列分布的方式来显示多个组件 GridView和ListView有共同的父类 : AbsListView ...
- 技术胖Flutter第三季-18布局CardWidget 卡片布局组件
技术胖Flutter第三季-18布局CardWidget 卡片布局组件 博客地址: https://jspang.com/post/flutter3.html#toc-420 最外面是Card布局,里 ...
- 【Flutter实战】六大布局组件及半圆菜单案例
老孟导读:Flutter中布局组件有水平 / 垂直布局组件( Row 和 Column ).叠加布局组件( Stack 和 IndexedStack ).流式布局组件( Wrap )和 自定义布局组件 ...
- GridLayout(网格布局)
常用属性: 排列对齐: ①设置组件的排列方式: android:orientation="" vertical(竖直,默认)或者horizontal(水平) ②设置组件的 ...
- Android开发自学笔记(Android Studio)—4.1布局组件
一.引言 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.在Android4.0之前,我们通常说 ...
随机推荐
- daffodil
import java.util.ArrayList; public class Daffodil { /** * 打印出100-999之间所有的"水仙花数",所谓"水仙 ...
- 一个vuepress配置问题,引发的js递归算法思考
前言 这两天在尝试用语雀+ vuepress + github 搭建个人博客. 小破站地址 :王天的 web 进阶之路 语雀作为编辑器,发布文档推送 github,再自动打包部署,大概流程如下. 问题 ...
- Maximum Diameter 题解
Maximum Diameter 题目大意 定义长度为 \(n\) 的序列 \(a\) 的权值为: 所有的 \(n\) 个点的第 \(i\) 个点的度数为 \(a_i\) 的树的直径最大值,如果不存在 ...
- 如何调用Metabase开放API
简介: Metabase是什么? 在传统企业的数据可视化业务中,通常需要从需求到审批,再到安排开发人员和排期,还要开发人员撰写代码最后再做导出.流程繁琐,参与的人员也多,往往需要几天甚至几周的时间! ...
- 新手面对安卓6.0以上的版本时出现一个关于文件权限检测的问题,报错为:“无法解析符号 'checkSelfPermission'”,解决办法
[[注意]:这只是笔者在遇到这个问题时的解决方法,如果对您毫无帮助,请自寻他法!!!] 面对新手:在简单做一个音乐播放程序时,如果面对安卓6.0以上的版本,就会出现一个关于文件权限检测的问题,报错为: ...
- Go语言基准测试(benchmark)三部曲之一:基础篇
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于基准测试(benchmark) Go的标准库内置的 ...
- HTML-9
(一)常用方法 toFixed(); 四舍五入到小数点后几位 var x=9.656; x.toFixed(0);//10 x.toFixed(2);//9.66 x.toFixed(4);//9.6 ...
- [Python急救站课程]圆的面积计算
利用公式计算圆的面积程序 radius = 25 # 设置圆的面积 area = 3.1415926 * radius * radius # 输入计算公式 print(area) # 输出计算值 pr ...
- 向量数据库Chroma极简教程
引子 向量数据库其实最早在传统的人工智能和机器学习场景中就有所应用.在大模型兴起后,由于目前大模型的token数限制,很多开发者倾向于将数据量庞大的知识.新闻.文献.语料等先通过嵌入(embeddin ...
- 虚拟机centos7上安装docker+jenkins
虚拟机centos7上安装docker+jenkins 学习某册子的CICD时,安装了docker和jenkins,记录的安装过程和中间碰到的问题. 使用的虚拟机为Parallels Desktop, ...
