最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter彈性布局Flex水平排列Row垂直排列Column使用示例

 更新時間:2023年08月06日 15:27:32   作者:Rocky_ruan  
這篇文章主要為大家介紹了Flutter彈性布局Flex水平排列Row垂直排列Column使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一:彈性布局(Flex)

彈性布局允許子組件按照一定比例來分配父容器空間。彈性布局的概念在其它UI系統(tǒng)中也都存在,如H5中的彈性盒子布局,Android中的FlexboxLayout等。Flutter中的彈性布局主要通過Flex和Expanded來配合實(shí)現(xiàn)

Flex({
    Key? key,
    required this.direction,//Axis.vertical,Axis.horizontal,/彈性布局的方向, Row默認(rèn)為水平方向,Column默認(rèn)為垂直方向
    this.mainAxisAlignment = MainAxisAlignment.start,//主軸排列方式
    this.mainAxisSize = MainAxisSize.max,
    this.crossAxisAlignment = CrossAxisAlignment.center,//交叉軸排列方式
    this.textDirection,//
    this.verticalDirection = VerticalDirection.down,//設(shè)置垂直方向上的子 Widget 的排列順序,默認(rèn)為 VerticalDirection.down
    this.textBaseline, // NO DEFAULT: we don't know what the text's baseline should be//設(shè)置文字對齊的基線類型
    this.clipBehavior = Clip.none,
    List<Widget> children = const <Widget>[],//子組件
  }) : assert(direction != null),
       assert(mainAxisAlignment != null),
       assert(mainAxisSize != null),
       assert(crossAxisAlignment != null),
       assert(verticalDirection != null),
       assert(crossAxisAlignment != CrossAxisAlignment.baseline || textBaseline != null, 'textBaseline is required if you specify the crossAxisAlignment with CrossAxisAlignment.baseline'),
       assert(clipBehavior != null),
       super(key: key, children: children);

1. direction設(shè)置主軸方向

可設(shè)置的值為 Axis.horizontal 和 Axis.vertical,交叉軸與主軸方向垂直。

在Flutter中,Row組件和Column組件都繼承自Flex組件

  • (1).Flex組件和Row、Column屬性主要的區(qū)別就是多一個direction。
  • (2).當(dāng)direction的值為Axis.horizontal的時候,則是Row。
  • (3).當(dāng)direction的值為Axis.vertical的時候,則是Column

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.spaceEvently:平均分布各個 Widget,與屏幕邊緣的間隔與其他 Widget 之間的間隔相等.

3. mainAxisSize設(shè)置主軸的大小

默認(rèn) MainAxisSize.max,可設(shè)置的值如下:

MainAxisSize.max:主軸的大小是父容器的大??;

MainAxisSize.min:主軸的大小是其子 Widget 大小之和。

4. crossAxisAlignment設(shè)置子 Widget 沿著交叉軸方向的排列方式

默認(rèn) CrossAxisAlignment.center,可設(shè)置的方式如下:

CrossAxisAlignment.start:與交叉軸的起始位置對齊;

CrossAxisAlignment.end:與交叉軸的結(jié)束位置對齊;

CrossAxisAlignment.center:居中對齊;

CrossAxisAlignment.stretch:填充整個交叉軸;

CrossAxisAlignment.baseline:按照第一行文字基線對齊。

5. verticalDirection設(shè)置垂直方向上的子 Widget 的排列順序

默認(rèn)為 VerticalDirection.down,設(shè)置方式如下:

VerticalDirection.down:start 在頂部,end 在底部;

VerticalDirection.up:start 在底部,end 在頂部。

6. textBaseline設(shè)置文字對齊的基線類型

可設(shè)置的值如下:

TextBaseline.alphabetic:與字母基線對齊;

TextBaseline.ideographic:與表意字符基線對齊;

栗子:

return Scaffold(
      body: Center(
        child: Flex(
          direction: Axis.vertical,////彈性布局的方向, Row默認(rèn)為水平方向,Column默認(rèn)為垂直方向
          mainAxisAlignment: MainAxisAlignment.spaceBetween,//主軸兩端對齊
          mainAxisSize: MainAxisSize.max,//父類容器大小
          crossAxisAlignment: CrossAxisAlignment.center,//交叉軸居中對齊
          children: [
            Container(
              width: 200,
              height: 20,
              color: Colors.purple,
              child: Text('我是第一列'),
            ),
            Container(
              width: 150,
              height: 20,
              color: Colors.orange,
              child: Text('我是第二列'),
            ),
            Container(
              width: 100,
              height: 20,
              color: Colors.red,
              child: Text('我是第三列'),
            )
          ],
        ),
      ),
    );

二:Flutter組件之Row水平排列

//水平排列
Row({
    Key? key,
    MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
    MainAxisSize mainAxisSize = MainAxisSize.max,
    CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
    TextDirection? textDirection,
    VerticalDirection verticalDirection = VerticalDirection.down,
    TextBaseline? textBaseline, // NO DEFAULT: we don't know what the text's baseline should be
    List<Widget> children = const <Widget>[],
  }) : super(
    children: children,
    key: key,
    direction: Axis.horizontal,
    mainAxisAlignment: mainAxisAlignment,
    mainAxisSize: mainAxisSize,
    crossAxisAlignment: crossAxisAlignment,
    textDirection: textDirection,
    verticalDirection: verticalDirection,
    textBaseline: textBaseline,
  );

栗子:

return Scaffold(
      body: Center(
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,//主軸兩端對齊
          mainAxisSize: MainAxisSize.max,//父類容器大小
          crossAxisAlignment: CrossAxisAlignment.center,//交叉軸居中對齊
          children: [
            Container(
              width: 100,
              height: 100,
              color: Colors.purple,
              child: Text('我是第一行'),
            ),
            Container(
              width: 100,
              height: 50,
              color: Colors.orange,
              child: Text('我是第二行'),
            ),
            Container(
              width: 100,
              height: 30,
              color: Colors.red,
              child: Text('我是第三行'),
            )
          ],
        ),
      ),
    );

三:Flutter組件之垂直排列Column

Column({
    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>[],
  }) : super(
    children: children,
    key: key,
    direction: Axis.vertical,
    mainAxisAlignment: mainAxisAlignment,
    mainAxisSize: mainAxisSize,
    crossAxisAlignment: crossAxisAlignment,
    textDirection: textDirection,
    verticalDirection: verticalDirection,
    textBaseline: textBaseline,
  );

栗子:

return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,//主軸兩端對齊
          mainAxisSize: MainAxisSize.max,//父類容器大小
          crossAxisAlignment: CrossAxisAlignment.start,//交叉軸居中對齊
          children: [
            Container(
              width: 150,
              height: 100,
              color: Colors.purple,
              child: Text('我是第一Column列'),
            ),
            Container(
              width: 100,
              height: 50,
              color: Colors.orange,
              child: Text('我是第二Column列'),
            ),
            Container(
              width: 200,
              height: 30,
              color: Colors.red,
              child: Text('我是第三Column列'),
            )
          ],
        ),
      ),
    );

以上就是Flutter彈性布局Flex水平排列Row垂直排列Column使用示例的詳細(xì)內(nèi)容,更多關(guān)于Flutter彈性布局水平垂直排列的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android仿微信聯(lián)系人按字母排序

    Android仿微信聯(lián)系人按字母排序

    但凡涉及到聯(lián)系人界面,幾乎都是按照字母排序的,那么聯(lián)系人按字母排序是怎么實(shí)現(xiàn)的呢,下面小編就給大家詳解Android仿微信聯(lián)系人按字母排序,需要的朋友可以參考下
    2015-08-08
  • Android開發(fā)環(huán)境搭建過程圖文詳解

    Android開發(fā)環(huán)境搭建過程圖文詳解

    這篇文章主要介紹了Android開發(fā)環(huán)境搭建過程圖文詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Kotlin開發(fā)的一些實(shí)用小技巧總結(jié)

    Kotlin開發(fā)的一些實(shí)用小技巧總結(jié)

    Kotlin 是一個基于 JVM 的新編程語言,用 JetBrains 的話來說是「更現(xiàn)代化、更強(qiáng)大,所以下面這篇文章主要給大家總結(jié)介紹了關(guān)于Kotlin的一些開發(fā)實(shí)用小技巧,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • Kotlin類型系統(tǒng)竟如此簡單

    Kotlin類型系統(tǒng)竟如此簡單

    這篇文章主要給大家介紹了關(guān)于Kotlin類型系統(tǒng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Kotlin具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Android?RxJava與Retrofit結(jié)合使用詳解

    Android?RxJava與Retrofit結(jié)合使用詳解

    RxJava和Retrofit的結(jié)合使用估計已經(jīng)相當(dāng)普遍了,自己工作中也是一直都在使用。在使用的過程中我們都會對其進(jìn)行封裝使用,GitHub上也有很多封裝好的項(xiàng)目可以直接拿來使用,其實(shí)對于開源框架的二次封裝有時候針對不同的業(yè)務(wù)邏輯封裝的過程中也多多少少有些不同
    2023-03-03
  • ubuntu用wifi連接android調(diào)試程序的步驟

    ubuntu用wifi連接android調(diào)試程序的步驟

    這篇文章主要介紹了ubuntu用wifi連接android調(diào)試程序的步驟,需要的朋友可以參考下
    2014-02-02
  • android實(shí)現(xiàn)Splash閃屏效果示例

    android實(shí)現(xiàn)Splash閃屏效果示例

    這篇文章主要介紹了android實(shí)現(xiàn)Splash閃屏效果的方法,涉及Android中postDelayed方法及AndroidManifest.xml權(quán)限控制的相關(guān)使用技巧,需要的朋友可以參考下
    2016-08-08
  • Android自定義電池組件實(shí)例代碼(BatteryView)

    Android自定義電池組件實(shí)例代碼(BatteryView)

    在許多應(yīng)用中,顯示設(shè)備的電池電量是一個常見的需求,下面這篇文章主要介紹了Android自定義電池組件(BatteryView)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-09-09
  • Android ScrollView無法填充滿屏幕的解決辦法

    Android ScrollView無法填充滿屏幕的解決辦法

    這篇文章主要介紹了Android ScrollView無法填充滿屏幕的解決辦法的相關(guān)資料,這里提供實(shí)例和解決辦法,需要的朋友可以參考下
    2017-07-07
  • Android源碼中常用的接口傳參實(shí)例詳解

    Android源碼中常用的接口傳參實(shí)例詳解

    這篇文章主要介紹了Android源碼中常用的接口傳參實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評論

麻江县| 苍山县| 伊通| 本溪市| 水城县| 沁源县| 盐山县| 太白县| 丽江市| 景泰县| 丰台区| 德格县| 仪陇县| 永嘉县| 武邑县| 板桥市| 读书| 扎囊县| 湖南省| 泗水县| 澎湖县| 大邑县| 元氏县| 老河口市| 伊通| 博湖县| 永福县| 景东| 宜丰县| 石城县| 光泽县| 阜阳市| 襄城县| 佛冈县| 玛沁县| 柳林县| 寻乌县| 游戏| 通州市| 扬中市| 元谋县|