Flutter | 你真的會(huì)用 Row一膨、Column 組件嗎?

如果你是 flutter 的新手洒沦,通過(guò)本文豹绪,你可以完全掌握 Row、Column 組件的用法申眼,解答你心中已久的疑惑瞒津,快速上手項(xiàng)目開發(fā)。又或者你對(duì) flutter 有一定開發(fā)經(jīng)驗(yàn)括尸,也許本文同樣可以給你幫助與啟發(fā)巷蚪。

Row 和 Column 用在哪里

在 flutter 中,Row 和 Column 組件都是布局類的組件濒翻,他們是用來(lái)管理多個(gè)子組件的排列方式的屁柏。寫過(guò) Android 原生的同學(xué)都知道,他們和 LinearLayout 非常的相似肴焊,通過(guò)設(shè)置 LinearLayout 的 orientation 屬性可以控制子 View 的排列方式是水平還是垂直的前联。在 flutter 中,Row 用來(lái)水平排列子組件娶眷,Column 用來(lái)垂直排列子組件似嗤。

一句話概括就是,Row 水平排列組件届宠,Column 垂直排列組件烁落。

主軸和縱軸

首先介紹兩個(gè)重要的概念:主軸和縱軸乘粒。Row 組件水平排列,所以它的主軸是水平方向伤塌,縱軸是垂直方向灯萍。Column 組件垂直排列,所以它的主軸是垂直方向每聪,縱軸是水平方向旦棉。軸的對(duì)齊方式規(guī)定了所有子組件在軸上應(yīng)該如何排列,記住這句話非常的重要药薯!

下面代碼中有一個(gè) Row 組件绑洛,包含了三個(gè) Container,他們的高度各不相同童本。

      body: Row(
        children: [
          Container(
            width: 50,
            height: 100,
            color: Colors.grey,
          ),
          Container(
            width: 50,
            height: 200,
            color: Colors.yellow,
          ),
          Container(
            width: 50,
            height: 300,
            color: Colors.red,
          ),
        ],
      ),

可以看到真屯,Row 組件在不指定任何屬性的情況下,在主軸(水平方向)所有子組件默認(rèn)是沿軸從左到右排列的(左對(duì)齊)穷娱,在縱軸(垂直方向)所有子組件默認(rèn)在縱軸的中間位置绑蔫。


圖1

這和 Row 組件的構(gòu)造函數(shù)是一致的,默認(rèn)指定主軸對(duì)齊方式是從左到右泵额,縱軸的對(duì)齊方式是居中配深。


image.png

屬性講解

我以 Row 組件來(lái)說(shuō)明下面這些屬性該如何用,并展示其效果梯刚。Column 參數(shù)和 Row一樣凉馆,不同的是布局方向?yàn)榇怪毙皆ⅲ鬏S縱軸正好相反亡资,讀者可類比 Row 來(lái)理解。

MainAxisAlignment

主軸對(duì)齊方式向叉,Row 組件的一個(gè)屬性锥腻,規(guī)定了所有子組件在主軸上應(yīng)該如何排列。在上面代碼的基礎(chǔ)上母谎,為 Row 指定 MainAxisAlignment 屬性瘦黑,值為 MainAxisAlignment.center。規(guī)定所有子組件應(yīng)該在主軸的中間排列奇唤,圖1就變成了圖2幸斥。

mainAxisAlignment: MainAxisAlignment.center,
圖2

CrossAxisAlignment

縱軸對(duì)齊方式,規(guī)定了所有子組件在縱軸上應(yīng)該如何排列咬扇。在上面代碼的基礎(chǔ)上甲葬,增加如下代碼,規(guī)定所有子組件應(yīng)該沿縱軸從左到右排列懈贺,圖2就變成了圖3经窖。

crossAxisAlignment: CrossAxisAlignment.start,
圖3

TextDirection

在 Row 組件中坡垫,表示水平方向子組件的布局順序(是從左往右還是從右往左)。在上面代碼的基礎(chǔ)上画侣,增加如下代碼冰悠,TextDirection.rtl 表示子組件的從右到左布局,圖3就變成了圖4配乱。

textDirection: TextDirection.rtl,
圖4

試試將主軸的對(duì)齊方式由居中改為從左到右溉卓,即

mainAxisAlignment: MainAxisAlignment.center,

改為

mainAxisAlignment: MainAxisAlignment.start,

奇怪的事情發(fā)生了,子組件并沒(méi)有像我們想的那樣沿主軸從左到右排列搬泥,結(jié)果如下圖的诵。如何解釋這個(gè)現(xiàn)象呢?那就是設(shè)置textDirection: TextDirection.rtl會(huì)讓主軸的方向變?yōu)閺挠业阶?/strong>佑钾,所以設(shè)置mainAxisAlignment: MainAxisAlignment.start就會(huì)讓子組件右對(duì)齊了西疤。讀者也可以這么理解:textDirection是mainAxisAlignment的參考系。

圖5

VerticalDirection

和 TextDirection 類似休溶,它是 CrossAxisAlignment 的參考系代赁,這個(gè)就不細(xì)講了。

MainAxisSize

表示 Row 在主軸(水平)方向占用的空間兽掰,默認(rèn)是 MainAxisSize.max芭碍,表示盡可能多的占用水平方向的空間,此時(shí)無(wú)論子 widgets 實(shí)際占用多少水平空間孽尽,Row 的寬度始終等于水平方向的最大寬度窖壕。在上面代碼的基礎(chǔ)上,增加如下代碼杉女,圖4就變成了圖5瞻讽。

mainAxisSize: MainAxisSize.min,
圖5

從上圖可以看出,如果 mainAxisSize 值為 MainAxisSize.min熏挎,則 mainAxisAlignment 屬性就會(huì)失效速勇,因?yàn)樽咏M件的寬度等于Row的寬度。只有當(dāng) mainAxisSize 的值為MainAxisSize.max 時(shí)坎拐,此屬性才有意義烦磁。

寫在最后

如果你對(duì)我感興趣,請(qǐng)移步到 http://blogss.cn 哼勇,進(jìn)一步了解都伪。

  • 如果本文幫助到了你,歡迎點(diǎn)贊和關(guān)注 ??
  • 由于作者水平有限积担,文中如果有錯(cuò)誤陨晶,歡迎在評(píng)論區(qū)指正 ??
  • 本文首發(fā)于簡(jiǎn)書,未經(jīng)許可禁止轉(zhuǎn)載 ??
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末磅轻,一起剝皮案震驚了整個(gè)濱河市珍逸,隨后出現(xiàn)的幾起案子逐虚,更是在濱河造成了極大的恐慌,老刑警劉巖谆膳,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叭爱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡漱病,警方通過(guò)查閱死者的電腦和手機(jī)买雾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)杨帽,“玉大人漓穿,你說(shuō)我怎么就攤上這事∽⒂” “怎么了晃危?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)老客。 經(jīng)常有香客問(wèn)我僚饭,道長(zhǎng),這世上最難降的妖魔是什么胧砰? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任鳍鸵,我火速辦了婚禮,結(jié)果婚禮上尉间,老公的妹妹穿的比我還像新娘偿乖。我一直安慰自己,他們只是感情好哲嘲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布贪薪。 她就那樣靜靜地躺著,像睡著了一般撤蚊。 火紅的嫁衣襯著肌膚如雪古掏。 梳的紋絲不亂的頭發(fā)上损话,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天侦啸,我揣著相機(jī)與錄音,去河邊找鬼丧枪。 笑死光涂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拧烦。 我是一名探鬼主播忘闻,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼恋博!你這毒婦竟也來(lái)了齐佳?” 一聲冷哼從身側(cè)響起私恬,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎炼吴,沒(méi)想到半個(gè)月后本鸣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硅蹦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年荣德,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片童芹。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涮瞻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出假褪,到底是詐尸還是另有隱情署咽,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布生音,位于F島的核電站艇抠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏久锥。R本人自食惡果不足惜家淤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瑟由。 院中可真熱鬧絮重,春花似錦、人聲如沸歹苦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)殴瘦。三九已至狠角,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚪腋,已是汗流浹背丰歌。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屉凯,地道東北人立帖。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像悠砚,于是被迫代替她去往敵國(guó)和親晓勇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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