Flutter GridView网格组件

article/2025/8/24 20:39:22

目录

常用属性

GridView使用配置       

        GridView.count使用

        GridView.extent使用

        GridView.count Container 实现列表

        GridView.extent Container 实现列表

        GridView.builder使用


GridView网格布局在实际项目中用的也是非常多的,当我们想让可以滚动的元素使用矩阵方式排列的时候。此时我们可以用网格列表组件GridView实现布局。

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

1、可以通过GridView.count实现网格布局
2、可以通过GridView.extent 实现网格布局
3、通过GridView.builder实现动态网格布局

常用属性

GridView使用配置       

        GridView.count使用

import 'package:flutter/material.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow),home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {@overrideWidget build(BuildContext context) {return GridView.count(crossAxisCount: 4, //一行显示的children: [Image.asset("assets/images/iv_account_selected.png"),Icon(Icons.abc_rounded),Icon(Icons.abc_sharp),Icon(Icons.factory),]);}
}

        GridView.extent使用

import 'package:flutter/material.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow),home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {@overrideWidget build(BuildContext context) {return GridView.extent(maxCrossAxisExtent: 180, //横轴子元素的最大长度children: [Icon(Icons.abc_rounded),Icon(Icons.abc_sharp),Icon(Icons.factory),],);}
}

        GridView.count Container 实现列表

import 'package:flutter/material.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow),home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {List<Widget> initList() {List<Widget> list = [];for (var i = 0; i < 10; i++) {list.add(Container(alignment: Alignment.center,decoration: BoxDecoration(color: Colors.blue),child: Text("第$i个元素", style: TextStyle(fontSize: 20)),),);}return list;}@overrideWidget build(BuildContext context) {return GridView.count(padding: EdgeInsets.all(10),crossAxisSpacing: 10, //水平间距mainAxisSpacing: 10, //垂直间距crossAxisCount: 2, //一行显示多少个元素childAspectRatio: 0.7,//宽高的比例children: initList(),);}
}

        GridView.extent Container 实现列表

import 'package:flutter/material.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow),home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {List<Widget> initList() {List<Widget> list = [];for (var i = 0; i < 10; i++) {list.add(Container(alignment: Alignment.center,decoration: BoxDecoration(color: Colors.blue),child: Text("第$i个元素", style: TextStyle(fontSize: 20)),),);}return list;}@overrideWidget build(BuildContext context) {return GridView.extent(padding: EdgeInsets.all(10),crossAxisSpacing: 10, //水平间距mainAxisSpacing: 10, //垂直间距maxCrossAxisExtent: 120,//横轴子元素的最大长度 动态计算//childAspectRatio: 0.7,//宽高的比例children: initList(),);}
}

map循环遍历数据,通过Container渲染

import 'package:flutter/material.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow),home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {List<Widget> initList() {List<Widget> list = [];for (var i = 0; i < 10; i++) {list.add(Container(alignment: Alignment.center,decoration: BoxDecoration(color: Colors.blue),child: Column(children: [Image.network("https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg"),Text("第$i元素"),]),),);}return list;}@overrideWidget build(BuildContext context) {return GridView.extent(padding: EdgeInsets.all(10),crossAxisSpacing: 10,//水平间距mainAxisSpacing: 10,//垂直间距maxCrossAxisExtent: 120,//横轴子元素的最大长度childAspectRatio: 1,//宽高的比例children: initList(),);}
}

        GridView.builder使用

import 'package:flutter/material.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow),home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {List list = [{"title": "Candy Shop","imageUrl":"https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg","author": "Mohamed Chahin",},{"title": "Zhao Shop","imageUrl":"https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg","author": "Mohamed Chahin",},{"title": "Fei Shop","imageUrl":"https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg","author": "Mohamed Chahin",},];Widget initList(context,index) {return Container(alignment: Alignment.center,decoration: BoxDecoration(color: Colors.blue),child: Column(children: [Image.network(list[index]["imageUrl"]),Text(list[index]["title"]),],),);}@overrideWidget build(BuildContext context) {return GridView.builder(padding: EdgeInsets.all(10),itemCount: list.length,gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2,crossAxisSpacing: 10,childAspectRatio: 1,),itemBuilder: initList);}// return GridView.builder(//   padding: EdgeInsets.all(10),//   itemCount: list.length,//   gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(//     maxCrossAxisExtent: 200,//     crossAxisSpacing: 10,//     childAspectRatio: 1,//   ),//   itemBuilder: initList,// );
}


http://www.hkcw.cn/article/tItxKniyvH.shtml

相关文章

The 2020 ICPC Asia Yinchuan Regional Programming Contest

A. Best Player 关于投影到坐标轴上&#xff0c;投影到x轴上&#xff0c;确实如果两个点的y值一样&#xff0c;会导致重影&#xff0c;但不能只看只看y轴的影响&#xff0c;还有要注意输出。 #include<bits/stdc.h> using namespace std; typedef long long ll; const l…

寄存器模型

8.layering sequence &#xff08;1&#xff09;概述 转化&#xff1a;高抽象级item&#xff0c;中间的sequence&#xff0c;低抽象级item。 &#xff08;2&#xff09;寄存器模型的示意图 &#xff08;3&#xff09;示例代码&#xff1a;bus packet sequence &#xff08;4&…

Python训练营打卡Day39

DAY 39 图像数据与显存 知识点回顾 1.图像数据的格式&#xff1a;灰度和彩色数据 2.模型的定义 3.显存占用的4种地方 a.模型参数梯度参数 b.优化器参数 c.数据批量所占显存 d.神经元输出中间状态 4.batchisize和训练的关系 作业&#xff1a;今日代码较少&#xff0c;理解内容…

AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月29日第92弹

从今天开始&#xff0c;咱们还是暂时基于旧的模型进行预测&#xff0c;好了&#xff0c;废话不多说&#xff0c;按照老办法&#xff0c;重点8-9码定位&#xff0c;配合三胆下1或下2&#xff0c;杀1-2个和尾&#xff0c;再杀6-8个和值&#xff0c;可以做到100-300注左右。 (1)定…

【AI智能体】Coze 插件从使用到实战详解

目录 一、前言 二、Coze 插件介绍 2.1 什么是插件 2.1.1 插件主要功能 2.1.2 coze 插件常用类型 2.1.3 coze 插件优势 2.2 插件与工具 2.3 插件费用说明 2.4 使用限制 2.5 权限说明 2.6 coze添加插件入口 三、Coze插件创建与使用 3.1 前置准备 3.1.1 查看api列表 …

python实现一个示波器仿真,可以改参数同步效果

代码 import sys import numpy as np import matplotlib.pyplot as plt from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar from matplotlib.an…

【前端】使用grid布局封装断点式进度条

业务需求要求展示一个动态进度条&#xff0c;不同于第三方插件的进度条&#xff0c;这个ui设计的是断点式进度条&#xff0c;效果当然是美观大方&#xff0c;但是因为没有现成的第三方插件可以实现&#xff0c;这当然难不倒一个成熟的前端开发工程师。 根据ui设计可以看到进度条…

[ctfshow web入门] web78

信息收集 表面上没有任何过滤&#xff0c;自由发挥 if(isset($_GET[file])){$file $_GET[file];include($file); }else{highlight_file(__FILE__); }解题 这些解法都在web32解释过&#xff0c;不再详细解释&#xff0c;有需要点击超链接&#xff1a;[ctfshow web入门] web3…

小白的进阶之路系列之六----人工智能从初步到精通pytorch数据集与数据加载器

本文将介绍以下内容: 数据集与数据加载器 数据迁移 如何建立神经网络 数据集与数据加载器 处理数据样本的代码可能会变得混乱且难以维护;理想情况下,我们希望我们的数据集代码与模型训练代码解耦,以获得更好的可读性和模块化。PyTorch提供了两个数据原语:torch.utils…

Memory Repair (二)

Implementing BIRA and BISR Logic 本节介绍如何在 circuit 中插入 repair logic。重点是插入 BISR 逻辑。只要内存库文件中存在 RepairAnalysis 包装器&#xff0c;并且该实例的 repair_analysis_present 属性未设置为 “Off”&#xff0c;就会在内存 BIST 逻辑&#xff08;控…

Vue 3 的路由管理

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、简易路由器二、Vue Router创建路由器使用路由器创建页面前言 路由指的是通过不同 URL 访问不同页面的方式。 根据路由管辖权的归属不同,可以分为前端路由(Client-Side Routing)和后端路由(Server-Side Routing)。…

油猴脚本开发基础

1. 油猴脚本深度解析 1.1 什么是油猴脚本&#xff1f; 本质&#xff1a;基于JavaScript的浏览器扩展脚本工作原理&#xff1a;在网页加载时注入自定义JS代码核心能力&#xff1a; 修改DOM结构拦截网络请求操作浏览器API存储本地数据 应用场景&#xff1a; 广告屏蔽网页功能增…

练习:对象数组 1

定义数组存储 3 个商品对象。商品的属性&#xff1a;商品的 id&#xff0c;名字&#xff0c;价格&#xff0c;库存。创建三个商品对象&#xff0c;并把商品对象存入到数组当中。 //对象数组 1 package demo01; public class Goods {private int goodsid;private String goodsN…

Baklib知识中台驱动业务创新

知识中台构建四库体系 Baklib通过打造知识资源库、案例库、规则库及专家库四大核心模块&#xff0c;构建起企业级知识中台的底层架构。其中&#xff0c;知识资源库采用多维度标签体系对文档、报告等结构化与非结构化数据进行分类存储&#xff1b;案例库通过智能抽取技术沉淀业…

“文化人”董宇辉也学会了表演 为消费者争取福利

“文化人”董宇辉也学会了表演 为消费者争取福利。董宇辉在直播间开始“表演”与品牌商谈判的戏码。最近,他在销售某品牌电视时,商家表示要收取最高200元的安装费。董宇辉当场拒绝,表示不合理,并坚持不接受收费。最终,商家负责人现场沟通后决定为所有购买电视的朋友免费安…

H5通用模态框可滚动弹框

弹框要求&#xff1a; 1、弹框图片宽高不限制&#xff0c;自适应 2、关闭按钮固定在图片下方 3、长图时弹框图片可滚动&#xff0c;遮罩层固定 4、点击遮罩层可关闭按钮&#xff0c;不冒泡 图例&#xff1a; 代码 <div class"image-modal" v-if"curSideI…

代码随想录打卡|Day51 图论(dijkstra(堆优化版)精讲、Bellman_ford 算法精讲)

图论part09 dijkstra&#xff08;堆优化版&#xff09;精讲(不熟悉) 代码随想录链接 题目链接 import java.util.*;class Edge {int to; // 邻接顶点int val; // 边的权重Edge(int to, int val) {this.to to;this.val val;} }class MyComparison implements Comparator<…

RS232/485转Profinet网关通讯气体检漏仪案例分享

RS232/485转Profinet网关通讯气体检漏仪案例分享 RS232转Profinet网关作为一种重要的工业通讯设备&#xff0c;其作用是将传统的RS232接口设备转换为现代的Profinet接口&#xff0c;从而实现与现代自动化控制系统的无缝对接&#xff0c;提高系统的集成度和性能。 气体检漏仪作…

电感专题归纳

文章目录 6.2.1 概念6.2.1x 电感电流6.2.2 储能6.2.3 伏秒原则6.2.4 电感元件6.2.5 电感充放电 6.3 换路定则6.4 储能总结6.5 串并联6.5.1 电容串联6.5.2 电容并联6.5.4 电感串联6.5.5电感并联6.5.3 电容与电导 6.6 电容与电感的滤波 电感在电路中的坐拥只有两个字&#xff0c;…

2023-ICLR-ReAct 首次结合Thought和Action提升大模型解决问题的能力

关于普林斯顿大学和Google Research, Brain Team合作的一篇文章, 在语言模型中协同Reasoning推理和Action行动。 论文地址&#xff1a;https://arxiv.org/abs/2210.03629 代码&#xff1a;https://github.com/ysymyth/ReAct.git 其他复现 langchain &#xff1a;https://pytho…