1. 什么是紧约束
紧约束 一词来自于 BoxConstraints 类中的 tight 构造。我们知道,通过 BoxConstraints 约束可以设置宽高的取值区间。如下所示,在 tight 构造中,最小和最大宽都是 size.width ,最小和最大高都是 size.height 。这就说明在该约束下,被约束者的 尺寸 只有一种取值可能。
---->[BoxConstraints]----
/// Creates box constraints that is respected only by the given size.
BoxConstraints.tight(Size size)
: minWidth = size.width,
maxWidth = size.width,
minHeight = size.height,
maxHeight = size.height;
一个组件想要打破原有 紧约束 的方式有:
[1] 通过 UnconstrainedBox [解除约束],让自身约束变为 [无约束]。
[2] 通过 Align、Flex、Stack 等组件 [放松约束],让自身约束变为 [松约束]。
[3] 通过 CustomSingleChildLayout 等自定义布局组件施加 [新约束]。