02.Layout
一、 方向部件
Row
水平方向
主轴方向:向右
Column
垂直方向
主轴方向:向下
Stack
屏幕内外方向
主轴方向:向屏幕外
1.1 主轴方向调整
Row 和 Column 可以通过调整主轴方向达到不同布局效果。
1. 默认主轴方向
class MyRowColumn extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
alignment: Alignment(1, 0),// x 对 Row 没影响 y 对 Column 无效
child: Column(
children: [
Container(
child: Icon(Icons.add_a_photo),
color: Colors.red,
alignment: Alignment(0,0),
),
Container(
child: Icon(Icons.add_alarm),
color: Colors.yellow,
alignment: Alignment(-1,0),
),
Container(
child: Icon(Icons.add_alert),
color: Colors.green,
alignment: Alignment(1,0),
),
],
),
);
}
}
2. MainAxisAlignment.center


3. MainAxisAlignment.end

4. MainAxisAlignment.spaceAround

5. MainAxisAlignment.start

6. MainAxisAlignment.spaceBetween

7. MainAxisAlignment.spaceEvenly

1.3 交叉轴
交叉轴 是垂直与主轴方向的

1.4 Stack

如下布局我们可以得到如图效果
1. 子Widget布局调整
我们可以发现,默认都是从左上角开始布局的。如果想要调整子Widget的位置我们该怎么做呢?
2. Positioned
A [Positioned] widget must be a descendant of a [Stack].
只可用于
Stack
通过 Positioned 我们可以调整 子Widget 相对 父Widget 的位置

3. margin
外边距

4. padding
内边距,通过对比可以明显发现红色区域被由内而外的撑大了

5. Positioned 与 margin 的区别
从上面的效果可以看出,这里好像 Positioned 与 margin 的效果基本一致。
Positioned
尽可用于 Stack
相对于父Widget的
margin
外边距
相对于相邻Widget的
二、 宽高比
用 AspectRatio 可以来指定 宽高比
如果同时设定了宽高那么
AspectRatio就会失效

Last updated
Was this helpful?