Flutter GridView網格組件

目錄

常用屬性

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.pswp.cn/news/907423.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907423.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907423.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jenkins實踐(8):服務器A通過SSH調用服務器B執行Python自動化腳本

Jenkins實踐(8):服務器A通過SSH調用服務器B執行Python自動化腳本 1、需求: 1、Jenkins服務器在74上,Python腳本在196服務器上 2、需要在服務器74的Jenkins上調用196上的腳本執行Python自動化測試 2、操作步驟 第一步:Linux Centos7配置SSH免密登錄 Linux Centos7配置S…

C#二維碼:利用 ThoughtWorks.QRCode 庫實現二維碼生成與解析

C#二維碼&#xff1a;利用 ThoughtWorks.QRCode 庫實現二維碼生成與解析 在當今數字化信息交互頻繁的時代&#xff0c;二維碼憑借其信息容量大、容錯能力強、易識別等特點&#xff0c;廣泛應用于各個領域。從移動支付、產品溯源到活動簽到&#xff0c;二維碼無處不在。在 C# 開…

【Java Web】速通JavaScript

參考筆記:JavaWeb 速通JavaScript_javascript 速通-CSDN博客 目錄 一、JavaScript快速入門 1. 基本介紹 2. JavaScript特點 3. JavaScript的引入方式(重要) 3.1 寫在script標簽中 ?????3.2 以外部文件方式引入 二、JS的數據類型 1. 變量 2. 常用數據類型 3.特殊值 三、…

Python打卡訓練營-Day13-不平衡數據的處理

浙大疏錦行 知識點&#xff1a; 不平衡數據集的處理策略&#xff1a;過采樣、修改權重、修改閾值交叉驗證代碼 過采樣 過采樣一般包含2種做法&#xff1a;隨機采樣和SMOTE 過采樣是把少的類別補充和多的類別一樣多&#xff0c;欠采樣是把多的類別減少和少的類別一樣 一般都是缺…

Mac OS 使用說明

Mac 的啟動組合鍵 了解可通過在啟動時按住一個或多個按鍵來訪問的 Mac 功能和工具。 若要使用這些組合鍵中的任何一個&#xff0c;請在按下電源按鈕以開啟 Mac 后或在 Mac 開始重新啟動后&#xff0c;立即按住相應按鍵。請一直按住&#xff0c;直至電腦出現對應的行為。 !!!上…

LoadRunner 是什么

LoadRunner 是一款由 Micro Focus&#xff08;原惠普企業軟件部門&#xff09;開發的性能測試工具&#xff0c;廣泛應用于軟件、應用程序和系統的 負載測試、壓力測試 和 性能分析。它通過模擬大量用戶并發操作&#xff0c;幫助測試人員評估系統在高負載下的性能、穩定性和可擴…

RISC-V PMA、PMP機制深入分析

1 PMA PMA&#xff08;Physical Memory Attributes&#xff09;&#xff0c;物理內存屬性&#xff0c;顧名思義就是用來設置物理內存屬性的&#xff0c;但這里說“設置”&#xff0c;并不合理&#xff0c;因為一般情況下各存儲的屬性&#xff0c;在芯片設計時就固定了&#xf…

SQL正則表達式總結

這里寫目錄標題 一、元字符二、正則表達函數1、 regexp_like(x,pattern[,match_option])2、 regexp_instr(x,pattern[,start[,occurrence[,return_option[, match_option]]]]) 3、 REGEXP_SUBSTR(x,pattern[,start[,occurrence[, match_option]]]) 4、 REGEXP_REPLACE(x,patter…

Shortest path 代碼

Project https://graphics.cs.utah.edu/research/projects/shortest-path-to-boundary/ Build and Debug Fork:(在Win10上&#xff09; https://github.com/chunleili/Shortest-Path-to-Boundary-for-Self-Intersecting-Meshes commit hash d3160168d2b6a58188d12e6cd959da…

AMBA總線家族成員

在AMBA總線協議體系中&#xff0c;AXI4雖然是最新且性能最強的總線協議&#xff0c;但AHB和APB仍然被廣泛使用&#xff0c;主要原因在于??場景適配性、資源優化和系統兼容性??的綜合考量。以下是具體分析&#xff1a; AMBA 1?&#xff1a;僅包含ASB和APB1。?AMBA 2?&am…

前端高頻面試題1:HTML/CSS/瀏覽器/計算機網絡

目錄 1.為什么會出現margin塌陷&#xff1f; 2.如何解決margin塌陷&#xff1f; 3.HTML5有哪些新特性&#xff1f; 4.常見的語義化標簽有哪些&#xff1f;語義化標簽的好處&#xff1f; 5.使用css和js做動畫有何優劣 6.如何實現文本超出展示省略號 7.deep在css中存在嗎&…

基于 Spring Boot + Vue 的墻繪產品展示交易平臺設計與實現【含源碼+文檔】

項目簡介 本系統是一個基于 Spring Boot Vue 技術棧開發的墻繪產品展示交易平臺&#xff0c;旨在提供一個高效、便捷的在線商城平臺&#xff0c;方便用戶瀏覽、選購墻繪產品&#xff0c;并提供管理員進行商品管理、訂單管理等功能。系統采用了前后端分離的架構&#xff0c;前…

STM32F103_Bootloader程序開發05 - Keil修改生成文件的路徑與文件名,自動生成bin格式文件

導言 通過Keil的相關配置&#xff0c;可以靈活地修改輸出文件的保存路徑及文件名稱。在Bootloader程序開發過程中&#xff0c;合理配置輸出文件對于后續固件升級和自動化腳本處理至關重要。完成路徑和文件名配置后&#xff0c;還可以借助Keil自帶的fromelf.exe工具&#xff0c;…

力扣每日一題2025.5.28——題號:3372.連接兩棵樹后最大目標節點數目 |

目錄 題目鏈接&#xff1a;3372. 連接兩棵樹后最大目標節點數目 I - 力扣&#xff08;LeetCode&#xff09; 題目描述 解法一&#xff1a; Java寫法&#xff1a; C寫法&#xff1a; 運行時間 時間復雜度和空間復雜度 總結 題目鏈接&#xff1a;3372. 連接兩棵樹后最大目…

華為防火墻NAPT配置

1.實驗拓撲 2.實驗配置 [SW1]dis cu # sysname SW1 # vlan batch 10 20 # interface Vlanif10ip address 192.168.10.254 255.255.255.0 # interface Vlanif20ip address 192.168.20.253 255.255.255.0 # interface GigabitEthernet0/0/1port link-type accessport default vl…

java導入excel

這樣讀取excel時&#xff0c;得到的是結果值&#xff0c;而不是單元格的公式 import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil;InputStream inputStream file.getInputStream(); ExcelReader reader ExcelUtil.getReader(inputStream, 1); L…

stm32cube ide如何生成LL庫工程

在 STM32Cube IDE 里生成使用 LL&#xff08;Low Layer&#xff09;庫的工程&#xff0c;可按以下步驟操作&#xff1a; 1. 新建 STM32 工程 啟動 STM32Cube IDE&#xff0c;選擇File→New→STM32 Project。依據需求挑選目標 MCU 型號&#xff0c;接著點擊Next。 2. 配置工程…

阿里通義實驗室突破空間音頻新紀元!OmniAudio讓360°全景視頻“聲”臨其境

在虛擬現實和沉浸式娛樂快速發展的今天&#xff0c;視覺體驗已經遠遠不夠&#xff0c;聲音的沉浸感成為打動用戶的關鍵。然而&#xff0c;傳統的視頻配音技術往往停留在“平面”的音頻層面&#xff0c;難以提供真正的空間感。阿里巴巴通義實驗室&#xff08;Qwen Lab&#xff0…

二十八、面向對象底層邏輯-SpringMVC九大組件之ViewResolver接口設計

在 Spring MVC 框架中&#xff0c;視圖解析器&#xff08;ViewResolver&#xff09;是連接控制器邏輯與具體視圖技術的核心紐帶。它通過抽象化的接口設計&#xff0c;將視圖的渲染邏輯與業務邏輯解耦&#xff0c;使開發者能夠靈活支持 JSP、Thymeleaf、FreeMarker 等多種視圖技…

LiveWallpaperMacOS:讓你的 Mac 桌面動起來

隨著桌面美化需求的不斷提升,用戶對于桌面壁紙的要求已經不再局限于靜態圖片。越來越多的 Mac 用戶希望桌面能像 Windows 一樣,擁有動態壁紙,展現個性、提升體驗。LiveWallpaperMacOS 正是這樣一款讓你的 Mac 桌面煥發活力的開源項目。 本文將詳細介紹 LiveWallpaperMacOS …