一、Align

1.1 构造函数:

  1. const Align({
  2. Key? key,
  3. this.alignment = Alignment.center,
  4. this.widthFactor,
  5. this.heightFactor,
  6. Widget? child,
  7. })

1.2 主要参数说明:

alignment:对齐方式,默认居中对齐
widthFactor:宽度因子,不设置的情况,会尽可能大
heightFactor:高度因子,不设置的情况,会尽可能大
child:子组件

1.3 代码示例:

1.4 显示效果:

二、Center

2.1 构造函数:

  1. const Center({
  2. Key? key,
  3. double? widthFactor,
  4. double? heightFactor,
  5. Widget? child,
  6. })

2.2 主要参数说明:

widthFactor:宽度因子,不设置的情况,会尽可能大
heightFactor:高度因子,不设置的情况,会尽可能大
child:子组件

2.3 代码示例:

2.4 显示效果:

三、Flex

3.1 构造函数:

  1. Flex({
  2. Key? key,
  3. required this.direction,
  4. this.mainAxisAlignment = MainAxisAlignment.start,
  5. this.mainAxisSize = MainAxisSize.max,
  6. this.crossAxisAlignment = CrossAxisAlignment.center,
  7. this.textDirection,
  8. this.verticalDirection = VerticalDirection.down,
  9. this.textBaseline, // NO DEFAULT: we don't know what the text's baseline should be
  10. this.clipBehavior = Clip.none,
  11. List<Widget> children = const <Widget>[],
  12. })

3.2 主要参数说明:

direction:主轴方向
mainAxisAlignment:子组件在主轴的对齐方式

  1. 1MainAxisAlignment.start //将子控件放在主轴的起始位置。
  2. 2MainAxisAlignment.end //将子控件放在主轴末尾。
  3. 3MainAxisAlignment.center //将子控件放在主轴中间位置。
  4. // 将主轴方向上的空白区域等分,使得子控件之间的空白区域相等,
  5. // 两端的子控件都靠近首尾,没有间隙。
  6. 4MainAxisAlignment.spaceBetween
  7. // 将主轴方向上的空白区域等分,使得子控件之间的空白区域相等,
  8. // 两端的子控件都靠近首尾,首尾子控件的空白区域为1/2。
  9. 5MainAxisAlignment.spaceAround
  10. // 将主轴方向上的空白区域等分,使得子控件之间的空白区域相等,包括首尾。
  11. 6MainAxisAlignment.spaceEvenly

mainAxisSize:主轴占用空间大小
crossAxisAlignment:子组件在副轴的对齐方式

  1. CrossAxisAlignment.start, 子控件显示在交叉轴的起始位置。
  2. CrossAxisAlignment.end, 子控件显示在交叉轴的末尾位置。
  3. CrossAxisAlignment.center, 子控件显示在交叉轴的中间位置。
  4. CrossAxisAlignment.stretch, 子控件完全填充交叉轴方向的空间。
  5. CrossAxisAlignment.baseline, 让子控件的baseline在交叉轴方向对齐。

textDirection:子组件在主轴的布局顺序
verticalDirection:子组件在副轴的布局顺序
textBaseline:排列子组件使用的基线标准
clipBehavior:裁剪方式
children:子组件数组

3.3 代码示例:

3.4 显示效果:

四、Row

4.1 构造函数:

  1. Row({
  2. Key? key,
  3. MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
  4. MainAxisSize mainAxisSize = MainAxisSize.max,
  5. CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
  6. TextDirection? textDirection,
  7. VerticalDirection verticalDirection = VerticalDirection.down,
  8. TextBaseline? textBaseline, // NO DEFAULT: we don't know what the text's baseline should be
  9. List<Widget> children = const <Widget>[],
  10. })

4.2 主要参数说明:

mainAxisAlignment:主轴对齐方式
mainAxisSize:水平方向尽可能大
crossAxisAlignment:交叉处对齐方式
textDirection:水平方向子widget的布局顺序(默认为系统当前Locale环境的文本方向(如中文、英语都是从左往右,而阿拉伯语是从右往左))
verticalDirection:表示Row纵轴(垂直)的对齐方向
textBaseline:如果上面是baseline对齐方式,那么选择什么模式(有两种可选)
children:子组件数组

4.3 代码示例:

4.4 显示效果:

五、Column

5.1 构造函数:

  1. Column({
  2. Key? key,
  3. MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
  4. MainAxisSize mainAxisSize = MainAxisSize.max,
  5. CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
  6. TextDirection? textDirection,
  7. VerticalDirection verticalDirection = VerticalDirection.down,
  8. TextBaseline? textBaseline,
  9. List<Widget> children = const <Widget>[],
  10. })

5.2 主要参数说明:

mainAxisAlignment:主轴对齐方式
mainAxisSize:水平方向尽可能大
crossAxisAlignment:交叉处对齐方式
textDirection:水平方向子widget的布局顺序(默认为系统当前Locale环境的文本方向(如中文、英语都是从左往右,而阿拉伯语是从右往左))
verticalDirection:表示Row纵轴(垂直)的对齐方向
textBaseline:如果上面是baseline对齐方式,那么选择什么模式(有两种可选)
children:子组件数组

5.3 代码示例:

5.4 显示效果:

六、Wrap

6.1 构造函数:

  1. Wrap({
  2. Key? key,
  3. this.direction = Axis.horizontal,
  4. this.alignment = WrapAlignment.start,
  5. this.spacing = 0.0,
  6. this.runAlignment = WrapAlignment.start,
  7. this.runSpacing = 0.0,
  8. this.crossAxisAlignment = WrapCrossAlignment.start,
  9. this.textDirection,
  10. this.verticalDirection = VerticalDirection.down,
  11. this.clipBehavior = Clip.none,
  12. List<Widget> children = const <Widget>[],
  13. })

6.2 主要参数说明:

direction:主轴方向
alignment:子组件在主轴上的对齐方式
spacing:主轴间距
runAlignment:自动换行后的行或者列的对齐方式
runSpacing:副轴间距
crossAxisAlignment:副轴对齐方式
textDirection:子组件在主轴方向的布局顺序
verticalDirection:子组件在副轴的布局顺序
clipBehavior:裁剪方式
children:子组件数组

6.3 代码示例:

6.4 显示效果:

七、Stack

7.1 构造函数:

  1. Stack({
  2. Key? key,
  3. this.alignment = AlignmentDirectional.topStart,
  4. this.textDirection,
  5. this.fit = StackFit.loose,
  6. this.overflow = Overflow.clip,
  7. this.clipBehavior = Clip.hardEdge,
  8. List<Widget> children = const <Widget>[],
  9. })

7.2 主要参数说明:

alignment:设置子Widget开始展示的位置
textDirection:设置子widget的左右显示方位
fit:设置没有通过positioned包裹的子widget的size,loose表示,以他子widget最大的size展示,StackFit.expand//stack的size等于他父widget的size
overflow:子组件超出stack时的截取方式,参考Text的溢出截取方式
clipBehavior:裁剪方式
children:子组件数据

7.3 代码示例:

7.4 显示效果: