class GrideMenu extends StatelessWidget {
GrideMenu({
Key key,
@required this.items,
@required this.onTap,
@required this.crossAxisCount
}):super(key:key);
final List items; //children的數量
final Function onTap; //child的點選事件
final int crossAxisCount; //每行的child個數
Widget build(context) {
//對children的數量取餘
//如果不等於0就說明存在多出來的children
//那麼行數就必須加1
final int more = items.length % crossAxisCount;
final int minCount = items.length ~/ crossAxisCount;
final int maxCount = more == 0 ? minCount : minCount + 1;
//獲取寬度
final screenWidth = MediaQuery.of(context).size.width;
//求取單個child的寬度
final itemWidth = screenWidth /crossAxisCount;
return Container(
width: context.width,
padding: EdgeInsets.all(8),
height: maxCount * (itemWidth - 10.0),
child: GridView.builder(
//不允許GridView內的children滾動
physics: NeverScrollableScrollPhysics(),
itemCount: items.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//橫軸元素個數
crossAxisCount: crossAxisCount,
//縱軸間距
mainAxisSpacing: 5.0,
//橫軸間距
crossAxisSpacing: 5.0,
//子元件寬高長度比例
childAspectRatio: 1),
itemBuilder: (ctx, index) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
GestureDetector(
onTap: onTap,
child: Container(
color:Color(0xff0099ff)
),
),
],
);
}),
);
}
}
複製程式碼
Flutter 使用GridView寫一個根據child數量自動增加的GridList
相關文章
- 一個根據資料庫自動生成model類的擴充套件資料庫套件
- Flutter的staggered GridView詳細使用FlutterView
- 訊飛有一個可以根據描述文字自動生成PPT的AI介面,有趣AI
- excel按照姓名自動匹配資料函式 怎麼根據姓名自動填寫資料Excel函式
- 【Flutter】如何寫一個Flutter自動打包成iOS程式碼模組的指令碼FlutteriOS指令碼
- 手把手教你根據PromiseA+手寫一個Promise類Promise
- webstorm根據.eslintrc檔案自動修復WebORMEsLint
- 根據MediatR的Contract Messages自動生成Minimal WebApi介面WebAPI
- SpringBoot使用JPA根據實體類自動生成相應表-mysqlSpring BootMySql
- java使用jaxb解析XML(含根據xml自動生成實體類)JavaXML
- flutter根據給定寬度自適應縮放字型大小Flutter
- PHP根據資料表自動生成CURD操作PHP
- mybatis根據表逆向自動化生成程式碼MyBatis
- 根據JSON自動構建的vue篩選框元件JSONVue元件
- 根據 Promises/A+ 手寫 PromsiePromise
- css 中 nth-child、first-child、last-child 的使用(選中第一個,第幾個,第幾個到第幾個,最後一個等)CSSAST
- gridview自動適應列寬View
- BIRT 中如何根據引數動態拼接 SQLSQL
- flutter Swiper+GridViewFlutterView
- 如何在Excel中根據數量生成抽獎名單Excel
- Flutter GridView 中使用Offstage 或者 Visibility 無效FlutterView
- Angular 如何根據一個 class 的定義和資料,動態建立一個該類的例項Angular
- GridView傳遞兩個引數的方法View
- 寫了個根據表名初始化所有模型的擴充套件模型套件
- 根據 Promises/A+規範 手寫 PromsiePromise
- 7. Flutter——GridView元件FlutterView元件
- P001-根據編碼規則自動生成ID的函式函式
- 寫一個自動回覆的聊天機器人機器人
- CSS 如何根據背景色自動切換黑白文字?CSS
- Django2.0-db(12)-根據已有的表自動生成模型Django模型
- Gradle根據引數配置不同的依賴Gradle
- [譯] Flutter —— 根據不同螢幕尺寸高效的適配 UIFlutterUI
- Laravel根據使用者id生成四位數唯一邀請碼Laravel
- BIRT 中根據引數實現動態日期分組
- 根據業務摸索出的一個selenium程式碼模版(python)Python
- 物件陣列 根據key 把一樣的push到一個陣列物件陣列
- 規範你的 commit message 並且根據 commit 自動生成 CHANGELOG.mdMIT
- 根據json內容更新表的一行,欄位數量不固定,但名稱需要一致JSON