Flutter基礎(chǔ)組件之Row/Column

介紹

Row:在水平方向上排列子widget的列表,屬于多子元素容器衡未。
Column:在垂直方向上排列子widget的列表尸执,屬于多子元素容器。
他們的父類都是Flex組件缓醋,根據(jù)Flex設(shè)置方向?yàn)樗交蛘叽怪保陀辛薘ow和Column绊诲。
注意:這兩個組件自身不帶滾動屬性送粱,如果超出了一行,在debug下面則會顯示溢出的提示掂之】苟恚可以在外層套一個SingleChildScrollView之類的組件使它們可以滾動脆丁。

屬性

  1. direction
    設(shè)置主軸方向,可設(shè)置的值為 Axis.horizontal 和 Axis.vertical动雹,交叉軸與主軸方向垂直槽卫。
  2. mainAxisAlignment
    設(shè)置子 Widget 沿著主軸方向的排列方式,默認(rèn) MainAxisAlignment.start胰蝠,可設(shè)置的方式如下:
  • MainAxisAlignment.start:左對齊歼培,默認(rèn)值;
  • MainAxisAlignment.end:右對齊;
  • MainAxisAlignment.center:居中對齊;
  • MainAxisAlignment.spaceBetween:兩端對齊;
  • MainAxisAlignment.spaceAround:每個 Widget 兩側(cè)的間隔相等,與屏幕邊緣的間隔是其他 Widget 之間間隔的一半;
  • MainAxisAlignment.spaceEvenly:平均分布各個 Widget茸塞,與屏幕邊緣的間隔與其他 Widget 之間的間隔相等躲庄;
    對比效果如下:


  1. mainAxisSize
    設(shè)置主軸的大小,默認(rèn) MainAxisSize.max钾虐,可設(shè)置的值如下:
  • MainAxisSize.max:主軸的大小是父容器的大性刖健;
  • MainAxisSize.min:主軸的大小是其子 Widget 大小之和效扫;
    對比效果如下:


  1. crossAxisAlignment
    設(shè)置子 Widget 沿著交叉軸方向的排列方式倔监,默認(rèn) CrossAxisAlignment.center,可設(shè)置的方式如下:
  • CrossAxisAlignment.start:與交叉軸的起始位置對齊菌仁;
  • CrossAxisAlignment.end:與交叉軸的結(jié)束位置對齊丐枉;
  • CrossAxisAlignment.center:居中對齊;
  • CrossAxisAlignment.stretch:填充整個交叉軸掘托;
  • CrossAxisAlignment.baseline:按照基線對齊瘦锹;
    對比效果如下:


  1. textDirection
    決定水平方向上的擺放順序,設(shè)置方式如下:
  • TextDirection.ltr:從左到右擺放
  • TextDirection.rtl:從右到左擺放
  1. verticalDirection
    設(shè)置垂直方向上的子 Widget 的排列順序闪盔,默認(rèn)為 VerticalDirection.down弯院,設(shè)置方式如下:
  • VerticalDirection.down:start 在頂部,end 在底部泪掀;
  • VerticalDirection.up:start 在底部听绳,end 在頂部。
  1. textBaseline
    設(shè)置文字對齊的基線類型异赫,可設(shè)置的值如下:
  • TextBaseline.alphabetic:與字母基線對齊椅挣;
  • TextBaseline.ideographic:與表意字符基線對齊;
    使用時(shí)當(dāng) crossAxisAlignment 設(shè)置為 baseline 時(shí)塔拳,必須設(shè)置 textBaseline 屬性的值
  1. clipBehavior
    當(dāng)子組件超出容器時(shí)的裁剪行為鼠证,設(shè)置方式如下:
  • Clip.none:不裁剪
  • Clip.hardEdge:裁剪
  • Clip.antiAlias:裁剪,抗鋸齒
  • Clip.antiAliasWithSaveLayer:裁剪靠抑,抗鋸齒

Expanded和Flexible

  1. fit屬性
    Flexible 的 fit 屬性默認(rèn)為 FlexFit.loose量九,而 Expanded 繼承 Flexible,其 fit 屬性指定為 FlexFit.tight,可設(shè)置的 fit 屬性如下:
  • tight:強(qiáng)制填充可利用的空間荠列;
  • loose:不強(qiáng)制填充可利用空間类浪,Widget自身大小。
  1. flex屬性
    Flexible 的 flex屬性是彈性系數(shù)
    對比效果如下:



    Expanded 可以使 Row肌似、Column费就、Flex 里面的組件填充沿著主軸可利用的空間,如果多個 Widget 都使用了 Expanded 組件川队,可以使用 Expanded 的 flex 屬性按照比例分配主軸空間力细,flex 屬性相當(dāng)于 Android LinearLayout 的 weight 屬性
    示例代碼如下:

Row(
    mainAxisAlignment: MainAxisAlignment.start,
    mainAxisSize: MainAxisSize.max,
    children: <Widget>[
      Expanded(
        flex: 1,
        child: Container(
            width: 50,
            height: 50,
            color: Colors.red,
            child: const Center(
              child: Text(
                "A",
                style: TextStyle(fontSize: 20, color: Colors.white),
              ),
            )),
      ),
      Expanded(
        flex: 2,
        child: Container(
            width: 50, // Row Expanded下width無效
            height: 50, // Column Expanded下height無效
            color: Colors.green,
            child: const Center(
              child: Text(
                "B",
                style: TextStyle(fontSize: 20, color: Colors.white),
              ),
            )),
      ),
      Container(
          width: 50,
          height: 50,
          color: Colors.yellow,
          child: const Center(
            child: Text(
              "C",
              style: TextStyle(fontSize: 20, color: Colors.white),
            ),
          )),
    ],
  );

顯示效果如下:


Spacer

Spacer 用來調(diào)節(jié) Widget 之間的間距,其本質(zhì)也是build了一個Expanded組件呼寸。會占據(jù)所有的剩余空間艳汽,因此 MainAxisAlignment 的設(shè)置將無效,Spacer 的屬性 flex 用于設(shè)置剩余空間的分配權(quán)重对雪,默認(rèn)值為 1河狐,表示占據(jù)所有剩余空間,如果兩個以上 Spacer 則按照 flex 分配剩余空間
示例代碼:

Row(
    children: <Widget>[
      Container(
        width: 80,
        height: 80,
        color: Colors.red,
      ),
      const Spacer(
        flex: 1,
      ),
      Container(
        width: 80,
        height: 80,
        color: Colors.green,
      ),
      const Spacer(
        flex: 2,
      ),
      Container(
        width: 80,
        height: 80,
        color: Colors.yellow,
      ),
    ],
  );

運(yùn)行效果如下:



以上就是Row和Column組件的基本介紹瑟捣。以及結(jié)合Expanded和Spacer來布局的例子

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馋艺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子迈套,更是在濱河造成了極大的恐慌捐祠,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桑李,死亡現(xiàn)場離奇詭異踱蛀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贵白,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進(jìn)店門率拒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人禁荒,你說我怎么就攤上這事猬膨。” “怎么了呛伴?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵勃痴,是天一觀的道長。 經(jīng)常有香客問我热康,道長沛申,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任褐隆,我火速辦了婚禮污它,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘庶弃。我一直安慰自己衫贬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布歇攻。 她就那樣靜靜地躺著固惯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缴守。 梳的紋絲不亂的頭發(fā)上葬毫,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天,我揣著相機(jī)與錄音屡穗,去河邊找鬼贴捡。 笑死,一個胖子當(dāng)著我的面吹牛村砂,可吹牛的內(nèi)容都是我干的烂斋。 我是一名探鬼主播,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼础废,長吁一口氣:“原來是場噩夢啊……” “哼汛骂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起评腺,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤帘瞭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蒿讥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝶念,經(jīng)...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年芋绸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了媒殉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡侥钳,死狀恐怖适袜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舷夺,我是刑警寧澤苦酱,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站给猾,受9級特大地震影響疫萤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜敢伸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一扯饶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦尾序、人聲如沸钓丰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽携丁。三九已至,卻和暖如春兰怠,著一層夾襖步出監(jiān)牢的瞬間梦鉴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工揭保, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肥橙,地道東北人。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓秸侣,卻偏偏與公主長得像存筏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子塔次,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評論 2 350

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