網(wǎng)站首頁 編程語言 正文
之前開發(fā)中用到的表格,本篇文章主要介紹如何在頁面中使用表格做一個記錄。
Table組件不同于其它Flex布局,它是直接繼承的RenderObjectWidget
的。相當(dāng)于是一個獨立的組件,區(qū)別與其他系列組件。
Table、TabRow、TabCell
慣例,先看下Table相關(guān)的構(gòu)造方法:
Table({ Key? key, this.children = const <TableRow>[],//行列表 表示多少行 this.columnWidths,// 表格每列分布寬度 // 默認(rèn)平分占比 修改每一列占比使用上面的參數(shù) this.defaultColumnWidth = const FlexColumnWidth(), this.textDirection,//閱讀順序 this.border,// 邊框樣式 this.defaultVerticalAlignment = TableCellVerticalAlignment.top,// 單元格垂直對齊方式 this.textBaseline, //對齊文本的水平線 }) // 表格內(nèi)容區(qū) const TableRow({ this.key, this.decoration,// 行單元裝飾 this.children // 每一行內(nèi)容列表 表示一行多少內(nèi)容 }); // 單元格垂直對齊方式 const TableCell({ Key? key, this.verticalAlignment,// 具體單元格垂直對齊方式、上面修改全局,這里可以覆蓋全局單獨設(shè)置 required Widget child, }
構(gòu)造參數(shù)很少,用起來也比較簡單,比如我們要展示三行三列數(shù)據(jù),這里以最為常見的成績表為例,設(shè)置了單元格樣式,表格的邊框色,單元格文本。
如果不設(shè)置每列的占比,表格默認(rèn)將會平分空間。
設(shè)置每列占比寬度值,
columnWidths: { 0:FixedColumnWidth(100), 1:FixedColumnWidth(200), 2:FixedColumnWidth(200), },
這是一個map對象,我們可以固定設(shè)置每列的寬度值,如果不設(shè)置它將自動填充剩余空間。
這是我們表格數(shù)據(jù)比較少的時候,當(dāng)列數(shù)比較多的時候,我們希望可以橫向滑動來查看,畢竟在移動端屏幕有限,這里我們就必須要用defaultColumnWidth
這個參數(shù)來設(shè)置單元格寬度,從源碼中我們可以得知,如果寬度無限大的話,需要使用FixedColumnWidth
或IntrinsicColumnWidth
設(shè)置單元格大小。
FixedColumnWidth
:固定寬度。
IntrinsicColumnWidth
:動態(tài)設(shè)置單元格大小,當(dāng)我們的單元格大小不能確定時使用,但是使用這個計算方式對于內(nèi)存消耗是非常大的,在源碼注釋中看到,具體為啥消耗大,暫時留個坑。
如果我們是用了動態(tài)計算單元格,那么表格就會變成下方這樣,根據(jù)內(nèi)容填充計算單元格大小自適應(yīng), 寬度就會根據(jù)文本大小動態(tài)計算單元格。
需要表格滑動記得別忘了加SingleChildScrollView
組件,如果需要橫縱雙向滑動,可以這么嵌套加:
SingleChildScrollView( scrollDirection: Axis.vertical, child: SingleChildScrollView( scrollDirection: Axis.horizontal, child: Table( textBaseline: TextBaseline.alphabetic, defaultVerticalAlignment: TableCellVerticalAlignment.middle, defaultColumnWidth: IntrinsicColumnWidth(), children: _getTabRows(), border: TableBorder.all(color: Colors.red, width: 1), ),)),
TabRow、TabCell
使用方式非常簡單就不過多介紹了,
需要注意的是TabCell
組件一定是Tabel
下的子組件才能使用,一般配合defaultVerticalAlignment
全局設(shè)置垂直對齊方式,將TabCell
嵌套在單元格組件上設(shè)置具體單元格垂直對齊方式。
小結(jié)
表格用法很簡單,主要是單元格大小、對齊方式需要注意下,當(dāng)然這個表格的行列數(shù)量必須是一一對應(yīng)的,不能像Excel那樣合并、分拆單元格。如果表格太復(fù)雜那就只能祭出大殺器自定義繪制了~~
原文鏈接:https://juejin.cn/post/7112386113154580488
相關(guān)推薦
- 2022-12-01 Go?sync?WaitGroup使用深入理解_Golang
- 2022-05-21 Python中with上下文管理協(xié)議的作用及用法_python
- 2022-08-04 yolov5中head修改為decouple?head詳解_python
- 2022-07-27 Go?error的使用方式詳解_Golang
- 2023-07-30 el-table自定義合并行或列
- 2022-06-14 ASP.NET?Core?MVC在視圖中使用依賴注入_實用技巧
- 2022-09-14 python?特殊屬性及方法詳細(xì)解析_python
- 2022-08-18 python打印日志方法的使用教程(logging模塊)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支