Flutter如何打破紧约束1:通过 UnconstrainedBox [解除约束]

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 等自定义布局组件施加 [新约束]。