flutter(六,頁面布局篇)

Tags: flutter

Flutter頁面布局篇

[TOC]


1. 布局及裝飾組件說明

組件名稱 中文釋義 說明
Align 對齊布局 指定child的對齊方式
AspectRatio 調(diào)整寬高比 根據(jù)設(shè)置的寬高比調(diào)整child組件
BaseLine 基準(zhǔn)線布局 所有的child底部所在的同一水平線
Center 居中布局 child處于水平和垂直方向的中間位置
Column 垂直布局 對child在垂直方向進行排列
ConstrainedBox 限定寬高 限定child的最大值
Container 容器布局 容器布局是一個組合的Widget瓦侮,包含定位和尺寸
FittedBox 縮放布局 縮放以及位置調(diào)整
FractionallySizedBox 百分比布局 根據(jù)現(xiàn)有空間按照百分比調(diào)整child的尺寸
GridView 網(wǎng)格布局 對多行多列同時進行操作
IndexedStack 棧索引布局 IndexedStack繼承自Stack强霎,顯示第index個child,其他child是不可見的
LimitedBox 限定寬高布局 對最大寬高進行限制
ListView 列表布局 用列表方式進行布局磷蛹,如多項數(shù)據(jù)的場景
Offstage 開關(guān)布局 控制是否顯示組件
OverflowBox 溢出父容器顯示 允許child超出父容器的范圍顯示
Padding 填充布局 處理容器和chid之間的間距
Row 水平布局 對child在水平方向進行排列
SizedBox 設(shè)置具體尺寸 用特定大小的盒子來限定child寬度和高度
Stack/Alignment Alignment棧布局 根據(jù)Alignment組件的屬性將child定位在Stack組件上
Stack/Positioned Positioned棧布局 根據(jù)Positioned組件的屬性將child定位在Stack組件上
Table 表格布局 使用表格的行和列進行布局
Transform 矩陣轉(zhuǎn)換 做矩陣變換烘浦,對child做平移抖坪、旋轉(zhuǎn)、縮放等操作
Wrap 按寬高自動換行 按寬度或高度闷叉,讓child自動換行布局

2. 基礎(chǔ)布局處理

2.1 Container(容器布局)

Container在Flutter里使用非常多擦俐,是一個組合Widget,內(nèi)部有繪制Widget握侧、定位Widget和尺寸Widget蚯瞧。

2.2 Center(居中布局)

居中布局,子元素處于水平和垂直方向的中間品擎。

2.3 Padding(填充布局)

用于處理容器和子元素間的間距埋合。

2.4 Align(對齊布局)

將子組件按指定方式對齊,并根據(jù)子組件的大小調(diào)整自己的大小萄传。

2.5 Row(水平布局)

水平方向是主軸甚颂,垂直方向是交叉軸。

2.6 Column(垂直布局)

垂直方向是主軸秀菱,水平方向是交叉軸振诬。

2.7 FittedBox(縮放布局)

FittedBox會在自己的尺寸范圍內(nèi)縮放并調(diào)整child位置。
兩個重要屬性:
fit:縮放方式衍菱。默認(rèn)值是BoxFix.contain贷揽,即child在FittedBox范圍內(nèi),盡可能大梦碗。contain是在保證child寬高比的前提下,盡可能填滿蓖救。
alignment:對齊方式洪规。默認(rèn)值是Alignment.center,居中顯示child循捺。

2.8 Stack/Alignment

Stack常用屬性

屬性名 類型 默認(rèn)值 說明
alignment AlignmentGeometry Alignment.topLeft 對齊方式

對齊方式有以下幾種:

  • bottomCenter 底部居中
  • bottomLeft 底部居左
  • bottomRight 底部居右
  • center 正中
  • centerLeft 中間居左
  • centerRight 中間居右
  • topCenter 頂部居中
  • topLeft 頂部居左
  • topRight 頂部居右

2.9 Stack/Positioned

Positioned組件用來定位的斩例。Stack里使用Positioned布局主要是因為在Stack組件里通常需要定位。

Positioned常用屬性

屬性名 類型 說明
top double 子元素相對頂部邊界距離
bottom double 子元素相對底部邊界距離
left double 子元素相對左側(cè)邊界距離
right double 子元素相對右側(cè)邊界距離

2.10 IndexedStack

繼承自Stack从橘,用于顯示第index個child念赶,其他child不可見础钠,所以它的尺寸與child中最大尺寸一致。

2.11 OverFlowBox

允許child超出父容器范圍顯示叉谜。
常用屬性

屬性名 類型 說明
alignment AlignmentGeometry 對齊方式
minWidth double 允許child最小寬度旗吁,如果child寬度小于該值,按照最小寬度顯示
maxWidth double 允許child最大寬度停局,如果child寬度大于該值很钓,按照最大寬度顯示
minHeight double 允許child最小高度,如果child寬度小于該值董栽,按照最小高度顯示
maxHeight double 允許child最大高度码倦,如果child寬度大于該值,按照最大高度顯示

3. 寬高尺寸處理

3.1 SizedBox

特定大小的盒子锭碳,強制child有特定的寬度和高度袁稽。如果寬度或高度為null,該組件會調(diào)整自身大小以匹配child的尺寸擒抛。

3.2 ConstrainedBox

用于限定child的最大推汽、最小寬高。如果child為null闻葵,會盡可能縮小尺寸民泵。
常用屬性

屬性名 類型 說明
constraints BoxConstraints child的限制條件,限制最大槽畔、最小寬高
child Widget 子元素組件

3.3 LimitedBox

用于限定最大寬高栈妆,與ConstainedBox類似,只是LimitedBox沒有最小寬高限制厢钧。
常用屬性

屬性名 類型 默認(rèn)值 說明
maxWidth double double.infini 最大寬度
maxHeight double double.infinity 最大高度

3.4 AspectRatio

用于設(shè)置調(diào)整child的寬高比鳞尔。適用于需要固定組件寬高比的情景。aspectRatio屬性不能為null早直,必須大于0且必須是有限的寥假。

3.5 FractionallySizedBox

會根據(jù)現(xiàn)有空間調(diào)整child的尺寸,適用在一個區(qū)域里取百分比尺寸時霞扬。如果寬高因子為null糕韧,則child的寬高會盡可能充滿整個區(qū)域。

常用屬性

屬性名 類型 說明
alignment AlignmentGeometry 對齊方式喻圃,不能為null
widthFactor double 寬度因子萤彩,寬度乘以該值,就是最后的寬度
heightFactor double 高度因子斧拍,用作計算最后實際高度

4. 列表及表格布局

4.1 ListView

4.2 GridView

4.3 Table

表格布局雀扶,每一行的高度由內(nèi)容決定,每一列的寬度由列數(shù)決定肆汹。

常用屬性

屬性名 類型 說明
columnWidths Map<int, TableColumnWidth> 設(shè)置每一列的寬度
defaultColumnWidth TableColumnWidth 默認(rèn)的每一列寬度愚墓,默認(rèn)情況下均分
textDeirection TextDirection 文字方向
border TableBorder 表格邊框
defaultVerticalAlignment TableCellVerticalAlignment 對齊方向予权。默認(rèn)垂直方向
textBaseLine TextBaseLine defaultVerticalAlignment為baseline時,會用到該屬性

5. 其他布局

5.1 Transform

矩陣轉(zhuǎn)換浪册∩ㄏ伲可以對child做平移、旋轉(zhuǎn)议经、縮放等操作斧账。

常用屬性

屬性名 類型 說明
transform Matrix4 一個4x4矩陣
origin Offset 旋轉(zhuǎn)點,相對于左上角頂點的偏移煞肾。默認(rèn)為左上角頂點
alignment AlignmentGeometry 對齊方式
transformHitTests bool 點擊區(qū)域是否也做相應(yīng)的改變

5.2 Baseline

基準(zhǔn)線布局咧织,將所有元素底部放在同一水平線上。

常用屬性

屬性名 類型 說明
baseline double baseline數(shù)值籍救,必須要有习绢,從頂部算
baselineType TextBaseline baseline類型,必須要有蝙昙。目前兩種類型:alphabetic對齊底部闪萄,ideographic對齊

5.3 Offstage

用于控制child是否顯示。

常用屬性

屬性名 類型 默認(rèn)值 說明
offstage bool true 默認(rèn)為true表示不顯示奇颠,false時顯示該組件

5.4 Wrap

跟row和column有些相似败去。單行的Wrap跟Row一樣,單列的Wrap跟Column一樣烈拒。適用于需要按寬度或高度讓child自動換行的場景圆裕。

常用屬性

屬性名 類型 默認(rèn)值 說明
direction Axis Axis.horizontal 主軸方向,默認(rèn)水平
alignment WrapAlignment WrapAlignment.start 主軸方向?qū)R方式荆几,默認(rèn)為start
spacing double 0.0 主軸方向的間距
runAlignment WrapAlignment WrapAlignment.start run的對齊方式吓妆,可以理解為新的行或列
runSpacing double 0.0 run的間距
crossAxisAlignment WrapAlignment WrapAlignment.start 交叉軸方向?qū)R方式
textDirection TextDirection - 文本方向
verticalDirection VerticalDirection - children的擺放順序,默認(rèn)是down
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吨铸,一起剝皮案震驚了整個濱河市行拢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诞吱,老刑警劉巖舟奠,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異房维,居然都是意外死亡沼瘫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門握巢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人松却,你說我怎么就攤上這事暴浦〗埃” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵歌焦,是天一觀的道長飞几。 經(jīng)常有香客問我,道長独撇,這世上最難降的妖魔是什么屑墨? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮纷铣,結(jié)果婚禮上卵史,老公的妹妹穿的比我還像新娘。我一直安慰自己搜立,他們只是感情好以躯,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著啄踊,像睡著了一般忧设。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颠通,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天址晕,我揣著相機與錄音,去河邊找鬼顿锰。 笑死谨垃,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的撵儿。 我是一名探鬼主播乘客,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淀歇!你這毒婦竟也來了易核?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤浪默,失蹤者是張志新(化名)和其女友劉穎牡直,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纳决,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡碰逸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了阔加。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饵史。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胳喷,到底是詐尸還是另有隱情湃番,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布吭露,位于F島的核電站吠撮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏讲竿。R本人自食惡果不足惜泥兰,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望题禀。 院中可真熱鬧鞋诗,春花似錦、人聲如沸投剥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽江锨。三九已至吃警,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啄育,已是汗流浹背酌心。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挑豌,地道東北人安券。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像氓英,于是被迫代替她去往敵國和親侯勉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 前言 本文的目的是為了讓讀者掌握不同布局類Widget的布局特點铝阐,分享一些在實際使用過程遇到的一些問題址貌,在《Flu...
    xqqlv閱讀 5,257評論 0 18
  • 本文主要介紹了Flutter布局相關(guān)的內(nèi)容,對相關(guān)知識點進行了梳理徘键,并從實際例子觸發(fā)练对,進一步講解該如何去進行布局。...
    Q吹個大氣球Q閱讀 9,746評論 6 51
  • 項目演示github地址 Flutter 的界面基本由Widgets組成吹害,widget需要位于MaterialAp...
    wayDevelop閱讀 2,639評論 1 1
  • 做為傳說中沒有吃過一口奶粉的娃螟凭,小丸子(對,她二歲半以前叫小丸子它呀,自我意識萌芽后螺男,就把這個小名給推翻了)從一歲后就...
    Joyce_xwz閱讀 276評論 0 0
  • 你所接受的一切信息棒厘,構(gòu)成了你的思維方式。所以下隧,長期接受碎片信息的后果绊谭,就是讓你的思維變得狹隘,難以進行復(fù)雜的思考汪拥。...
    泰尚律聯(lián)TSLL閱讀 564評論 2 12