Flutter核心Widget介绍(4)

220 阅读3分钟

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
})
序号属性值属性说明
1alignment容器中子级的对齐方式
2padding填充 内边距
3color填充子级颜色
4decoration子级后装饰
5foregroundDecoration子级前装饰
6width宽度
7heigth高度
8constraints额外的约束附加其子级
9margin外边距
10transform变化矩阵(动画)
11child子级
12clipBehavior裁剪行为

介绍

它是一个方便的Widegt,结合了绘制,定位和调整大小的widgets.
  • 容器(container)首先用填充(通过装饰decration中存在的任何边界进行膨胀)包围子对象,然后对填充范围应用附件约束(如果其中一个非空,则将宽度和高度合并为约束).然后,容器被从边距描述的额外的空白空间包围.

  • 器绘制期间,首先应用给定的transform,然后绘制decoration来填充 填充范围,然后在绘制其自对象,最后绘制其前景装饰foregroundDecoration,也是填充其填充范围.

  • 无子级的容器会尽可能的大,除非传入的约束是无界的.在这种情况下,它们尽可能的小。有子级的容器大小适合其子级.它的高度、宽度和约束的参数值通过其构造行数重写.

  • 默认情况下,对于所有命中测试,容器都返回false。如果指定了color属性,则命中测试由ColoredBox处理,它总是返回true。如果指定了装饰或前场装饰属性,则命中测试由装饰性试验.

布局行为

总结:遵循对齐方式,根据子对象调整自身大小,遵循宽度、高度和约束条件,扩展以适合父对象,尽可能小.
具体的说:
    1. 如果widget无子级,没有高度,没有宽度,没有约束(constrains),且其父级提供无边界的约束,则Container的尺寸尽可以的小.
    1. 如果widget无子级和没有对齐方式,但是提供了高度、宽度或约束,那么Container将在给的这些约束和父级的约束的组合的情况下尽量小.
    1. 如果widget无子级,没有高度,没有宽度,没有约束,且没有对齐方式,但是其父级提供的有边界约束,则Container将展开已适应其父级的约束.
    1. 如果widget有对齐方式,和其父级提供了无边界约束,则Container将尝试围绕其子级调整其自身的大小.
    1. 如果widget有对齐方式,和其父级提供了有边界约束,则Container将尝试展开以适应其父级,然后根据其对齐方式将其子级放在其自身中.
    1. 如果widget有子级,但没有高度、宽度、约束和对齐,则Container将约束从父级传递给子级,并调整自身大小以匹配子项.
    1. marginpadding属性同样也会影响其布局