Flutter學習筆記11-線性布局(Row和Column)

線性布局膝捞,即指沿水平或垂直方向排布子組件瀑凝。Flutter中通過Row和Column來實現(xiàn)線性布局序芦。

1.主軸和縱軸

對于線性布局,有主軸和縱軸之分粤咪,如果布局是沿水平方向谚中,那么主軸就是指水平方向,而縱軸即垂直方向寥枝;如果布局沿垂直方向宪塔,那么主軸就是指垂直方向,而縱軸就是水平方向囊拜。在線性布局中某筐,有兩個定義對齊方式的枚舉類MainAxisAlignmentCrossAxisAlignment,分別代表主軸對齊和縱軸對齊冠跷。

2.Row

Row可以在水平方向排列其子widget南誊。源碼如下:

 Row({
    Key key,
    MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
    MainAxisSize mainAxisSize = MainAxisSize.max,
    CrossAxisAlignment crossAxisAlignment =   CrossAxisAlignment.center,
    TextDirection textDirection,
    VerticalDirection verticalDirection = VerticalDirection.down,
    TextBaseline textBaseline,
    List<Widget> children = const <Widget>[],
  })
  • textDirection
    表示水平方向子組件的布局順序(是從左往右還是從右往左),默認為系統(tǒng)當前Locale環(huán)境的文本方向(如中文蜜托、英語都是從左往右抄囚,而阿拉伯語是從右往左)。
  • mainAxisSize
    表示Row在主軸(水平)方向占用的空間橄务,默認是MainAxisSize.max幔托,表示盡可能多的占用水平方向的空間,此時無論子widgets實際占用多少水平空間蜂挪,Row的寬度始終等于水平方向的最大寬度柑司;而MainAxisSize.min表示盡可能少的占用水平空間迫肖,當子組件沒有占滿水平剩余空間時锅劝,Row的實際寬度等于所有子組件占用的的水平空間攒驰。
  • mainAxisAlignment
    表示子組件在Row所占用的水平空間內(nèi)對齊方式,如果mainAxisSize值為MainAxisSize.min故爵,則此屬性無意義玻粪,因為子組件的寬度等于Row的寬度。只有當mainAxisSize的值為MainAxisSize.max時诬垂,此屬性才有意義劲室,MainAxisAlignment.start表示沿textDirection的初始方向?qū)R,如textDirection取值為TextDirection.ltr時结窘,則MainAxisAlignment.start表示左對齊很洋,textDirection取值為TextDirection.rtl時表示從右對齊。而MainAxisAlignment.end和MainAxisAlignment.start正好相反隧枫;MainAxisAlignment.center表示居中對齊喉磁。可以認為textDirection是mainAxisAlignment的參考系官脓。
  • verticalDirection
    表示Row縱軸(垂直)的對齊方向协怒,默認是VerticalDirection.down,表示從上到下卑笨。
  • crossAxisAlignment
    表示子組件在縱軸方向的對齊方式孕暇,Row的高度等于子組件中最高的子元素高度,它的取值和MainAxisAlignment一樣(包含start赤兴、end妖滔、 center三個值),不同的是crossAxisAlignment的參考系是verticalDirection桶良,即verticalDirection值為VerticalDirection.down時crossAxisAlignment.start指頂部對齊座舍,verticalDirection值為VerticalDirection.up時,crossAxisAlignment.start指底部對齊艺普;而crossAxisAlignment.end和crossAxisAlignment.start正好相反簸州。
  • children :子組件數(shù)組
    代碼示例:
class RowDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      children: <Widget>[
        Container(
          color: Color(0xfffcec4ec),
          width: 90.0,
          height: 50.0,
        ),
        Container(
          color: Color(0xfff8bbd0),
          width: 90.0,
          height: 50.0,
        ),
        Container(
          color: Color(0xfff48fb1),
          width: 90.0,
          height: 50.0,
        ),
      ],
    );
  }
}

運行效果圖如下:

3. Column

Column可以在垂直方向排列其子組件。參數(shù)和Row一樣歧譬,不同的是布局方向為垂直岸浑,主軸縱軸正好相反。代碼示例:

class ColumnDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Container(
          color: Color(0xfffce4ec),
          width: 90.0,
          height: 50.0,
        ),
        Container(
          color: Color(0xfff8bbd0),
          width: 90.0,
          height: 50.0,
        ),
        Container(
          color: Color(0xfff48fb1),
          width: 90.0,
          height: 50.0,
        ),
        Container(
          color: Color(0xfff06292),
          width: 90.0,
          height: 50.0,
        ),
        Text('We move under cover and we move as one'),
        Text('Through the night, we have one shot to live another day'),
        Text('We cannot let a stray gunshot give us away'),
        Text('We will fight up close, seize the moment and stay in it'),
        Text('It’s either that or meet the business end of a bayonet'),
        Text('The code word is ‘Rochambeau,’ dig me?'),
        Text(
          'Rochambeau!',
          style: DefaultTextStyle.of(context).style.apply(fontSizeFactor: 2.0),
        ),
      ],
    );
  }
}

運行效果圖如下:


代碼傳送門

最后編輯于
?著作權(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é)果婚禮上陌知,老公的妹妹穿的比我還像新娘他托。我一直安慰自己,他們只是感情好仆葡,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布赏参。 她就那樣靜靜地躺著,像睡著了一般沿盅。 火紅的嫁衣襯著肌膚如雪把篓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天腰涧,我揣著相機與錄音韧掩,去河邊找鬼。 笑死窖铡,一個胖子當著我的面吹牛疗锐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播费彼,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼滑臊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了箍铲?” 一聲冷哼從身側(cè)響起雇卷,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后关划,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體小染,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年贮折,在試婚紗的時候發(fā)現(xiàn)自己被綠了裤翩。 大學時的朋友給我發(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
  • 正文 我出身青樓,卻偏偏與公主長得像毫缆,于是被迫代替她去往敵國和親唯竹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354