今天来了解一些flutter的组件

Container(布局组件)
定义:Container是功能丰富的布局组件,是个多功能组合容器
尺寸控制:可通过多种方式定义大小,有明确优先级规则
优先级:明确宽高>constraints约束>父组件约束>自适应组件大小
装饰系统:通过decoration属性实现视觉效果,但和color属性互斥
布局控制:提供内外边距和对齐方式
可选变化:支持绘制时进行矩阵变换,如旋转、倾斜、平移等

例如
1 | import 'package:flutter/material.dart'; |

好的,我们可以看到出现了红色方块,这个是用color来填充颜色的,而我们还有一种方式就是decoration装饰器
1 | import 'package:flutter/material.dart'; |

Center(居中组件)
Center:将其子组件在父容器的空间内进行水平和垂直方向上的居中排列
注意事项:Center不能设置宽高,Center的最终大小取决于其父组件传递给它的约束,Center会向它的父组件申请尽可能大的空间
实现固定宽且居中的组件:Center去包裹一个具有固定宽高的子组件。Container/SizeBox
1 | import 'package:flutter/material.dart'; |

Align(对齐组件)
作用:精确控制其子组件在父容器空间内的对齐位置
alignment(对齐方式):子组件在父容器内的对齐方式
widthFactor(宽度因子):Align的宽度将是子组件宽度乘以该因子
heightFactor(高度因子):Align的高度将是子组件高度乘以该因子
1 | import 'package:flutter/material.dart'; |

- 与Center的区别:Center是Align的一个特例,继承自Align,相当于一个将alignment属性为居中的Align.Center
- 使用场景:当需要将个组件放置在父容器的特定角落,Align是理想选择
- 动态尺寸:通过widthFactor和heightFactor,可以创建出与子组件大小成比例的容器,动态布局中很有用
Padding(内边距组件)
单独设置某个或者某几个方向的边距
EdgeInsets.all
1 | import 'package:flutter/material.dart'; |

EdgeInsets.only
当然也可以指定那些
1 | import 'package:flutter/material.dart'; |
我们也可以,使用Edgelnsets.symmetric属性进行对称设置,vertical(纵向)、horizontal(横向)来直接同时改两个方向
1 | import 'package:flutter/material.dart'; |

Column(垂直线性布局)


主轴
主轴就是垂直的放在界面中间的轴

1 | import 'package:flutter/material.dart'; |

mainAxisAligment
这里假设column有如下的资
1 | Column( |
start
mainAxisAlignment: MainAxisAlignment.start
1 | A |
center
mainAxisAlignment: MainAxisAlignment.center
1 |
|
end
mainAxisAlignment: MainAxisAlignment.end
1 |
|
spaceBetween
mainAxisAlignment: MainAxisAlignment.spaceBetween
1 | A |
spaceAround
mainAxisAlignment: MainAxisAlignment.spaceAround
1 |
|
spaceEvenly
mainAxisAlignment: MainAxisAlignment.spaceEvenly
1 |
|
交叉轴

| 属性 | 控制方向 |
|---|---|
| mainAxisAlignment | 上下(主轴) |
| crossAxisAlignment | 左右(交叉轴) |
1 | import 'package:flutter/material.dart'; |

crossAxisAlignment
start
crossAxisAlignment: CrossAxisAlignment.start
1 | A |
center
crossAxisAlignment: CrossAxisAlignment.center
1 | A |
end
crossAxisAlignment: CrossAxisAlignment.end
1 | A |
stretch
crossAxisAlignment: CrossAxisAlignment.stretch
这个不好描述,大概就是如字面意思stretch延伸
Row(水平线性布局)

主轴
刚才我们学的都是竖直排列的,现在我们看看水平排列的吧

这个和Column几乎一模一样,连属性都可以复用

1 | import 'package:flutter/material.dart'; |
SizedBox
当然我们也可以手动增加边距使用SizedBox
1 | import 'package:flutter/material.dart'; |

margin
还有一种方式就是使用margin
1 | import 'package:flutter/material.dart'; |

交叉轴
这个和刚才的一样的

1 | import 'package:flutter/material.dart'; |


评论区