Container
Container({
Key key,
AlignmentGeometry alignment,
EdgeInsetsGeometry padding,
Color color,
Decoration decoration,
Decoration foregroundDecoration,
double width,
double height,
BoxConstraints constraints,
EdgeInsetsGeometry margin,
Matrix4 transform,
Widget child,
Clip clipBehavior: Clip.none
})
| 序号 | 属性值 | 属性说明 |
|---|---|---|
| 1 | alignment | 容器中子级的对齐方式 |
| 2 | padding | 填充 内边距 |
| 3 | color | 填充子级颜色 |
| 4 | decoration | 子级后装饰 |
| 5 | foregroundDecoration | 子级前装饰 |
| 6 | width | 宽度 |
| 7 | heigth | 高度 |
| 8 | constraints | 额外的约束附加其子级 |
| 9 | margin | 外边距 |
| 10 | transform | 变化矩阵(动画) |
| 11 | child | 子级 |
| 12 | clipBehavior | 裁剪行为 |
介绍
它是一个方便的Widegt,结合了绘制,定位和调整大小的widgets.
-
容器(container)首先用填充(通过装饰decration中存在的任何边界进行膨胀)包围子对象,然后对填充范围应用附件约束(如果其中一个非空,则将宽度和高度合并为约束).然后,容器被从边距描述的额外的空白空间包围.
-
器绘制期间,首先应用给定的
transform,然后绘制decoration来填充 填充范围,然后在绘制其自对象,最后绘制其前景装饰foregroundDecoration,也是填充其填充范围. -
无子级的容器会尽可能的大,除非传入的约束是无界的.在这种情况下,它们尽可能的小。有子级的容器大小适合其子级.它的高度、宽度和约束的参数值通过其构造行数重写.
-
默认情况下,对于所有命中测试,容器都返回false。如果指定了color属性,则命中测试由ColoredBox处理,它总是返回true。如果指定了装饰或前场装饰属性,则命中测试由装饰性试验.
布局行为
总结:遵循对齐方式,根据子对象调整自身大小,遵循宽度、高度和约束条件,扩展以适合父对象,尽可能小.
具体的说:
-
- 如果widget无子级,没有高度,没有宽度,没有约束(constrains),且其父级提供无边界的约束,则
Container的尺寸尽可以的小.
- 如果widget无子级,没有高度,没有宽度,没有约束(constrains),且其父级提供无边界的约束,则
-
- 如果widget无子级和没有对齐方式,但是提供了高度、宽度或约束,那么
Container将在给的这些约束和父级的约束的组合的情况下尽量小.
- 如果widget无子级和没有对齐方式,但是提供了高度、宽度或约束,那么
-
- 如果widget无子级,没有高度,没有宽度,没有约束,且没有对齐方式,但是其父级提供的有边界约束,则
Container将展开已适应其父级的约束.
- 如果widget无子级,没有高度,没有宽度,没有约束,且没有对齐方式,但是其父级提供的有边界约束,则
-
- 如果widget有对齐方式,和其父级提供了无边界约束,则
Container将尝试围绕其子级调整其自身的大小.
- 如果widget有对齐方式,和其父级提供了无边界约束,则
-
- 如果widget有对齐方式,和其父级提供了有边界约束,则
Container将尝试展开以适应其父级,然后根据其对齐方式将其子级放在其自身中.
- 如果widget有对齐方式,和其父级提供了有边界约束,则
-
- 如果widget有子级,但没有高度、宽度、约束和对齐,则
Container将约束从父级传递给子级,并调整自身大小以匹配子项.
- 如果widget有子级,但没有高度、宽度、约束和对齐,则
-
margin和padding属性同样也会影响其布局