在Flutter中有一些布局,比如今天要说的Row/Column布局,看字面意思就是我们熟知的横向布局和纵向布局.
先说一下构造方法:
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>[],
})
Row和Column的构造方法是一样的,用法也是一样的,就是方向上不同,我们对属性每一个去介绍:
- MainAxisAlignment:主轴的对齐方式,什么是主轴呢?如果当前是按照Row组件,那么主轴就是水平的,如果当前是Row的布局,那么主轴就是水平的:
属性名称 |
样式 |
start |
内部的子组件将从主轴起始位置开始排列(正向排列) |
end |
内部的子组件将从主轴末尾位置开始排列(反向排列) |
center |
内部的子组件将从主轴中间位置开始排列(居中) |
spaceBetween |
内部的首尾子组件靠近首尾两端,其余子组件居中排列且组件间的间距一样 |
spaceAround |
内部的子组件居中排列,且每个子组件的左右边距一样大 |
spaceEvenly |
内部的子组件居中显示,每个空间的左边和右边都有相同的间距 |
MainAxisAlignment.png
2.mainAxisSize:这个属性用来设置 Row/Column 布局的宽高值,有两个值可以设置:
属性名称 |
样式 |
max |
整个控件占据的最大值 |
min |
整个控件占据的最小值 |
mainAxisSize的max.png
mainAxisSize的min.png
- crossAxisAlignment:这个属性用来控制非主轴的对齐方式:
属性名称 |
样式 |
start |
内部的子组件将从非主轴起始位置开始排列(正向排列) |
end |
内部的子组件将从非主轴末尾位置开始排列(反向排列) |
crossAxisAlignment.png
- textDirection:这个属性用来控制 Row 布局中内部子组件的摆放顺序:
属性名称 |
样式 |
TextDirection.ltr |
从左至右排列 |
TextDirection.rtl |
从右至左排列 |
textDirection.png
- verticalDirection:这个属性用来控制 Column 布局中内部子组件的摆放顺序:
属性名称 |
样式 |
VerticalDirection.up |
从下至上排列 |
VerticalDirection.down |
从上至下排列 |
verticalDirection.png
- textBaseline:这个属性也是用来设置子组件对齐的,只不过对齐的是字符的基线:
属性名称 |
样式 |
TextBaseline.ideographic |
用于对齐表意字符的水平线 |
TextBaseline.alphabetic |
用于对齐字母字符的水平线 |
需要注意的是,这个需要配合 crossAxisAlignment 属性来使用,来看一下具体的效果.
textBaseline.png
想了解更多Flutter学习知识请联系:QQ(814299221)
网友评论