Flutter:Column 小部件在垂直方向上是受约束还是不受约束?

Mey*_*sam 3 flutter flutter-layout

我们应该考虑Column小部件在垂直方向上受约束还是不受约束?

根据小部件的文档Column

当列的内容超过可用空间量时,列就会溢出,并且内容会被剪裁。

据我了解,这意味着 Column 小部件在垂直方向受到约束(或有界)。

另一方面,Center小部件的文档说:

如果维度不受约束并且相应的大小因子为空,则小部件将与其子级在该维度中的大小相匹配。

当我将小部件放置Center在 a 的子级中时Column,会发生什么情况:Center小部件会缩小其高度以匹配其子级的高度。根据上述文档,这意味着Column小部件在垂直方向上不受约束。

那么哪种做法是正确的呢?Column小部件在垂直方向上是受约束还是不受约束?

Edm*_*man 8

我认为您将父级约束与子级约束混合在一起。

列本身从其父项接收的框约束与其传递给其子项的框约束不同:列的高度可能受到其父项的约束,但它为其子项提供了无限(不受约束)的高度。所以..

据我了解,这意味着 Column 小部件在垂直方向受到约束(或有界)。

是的,该列受到其父列的约束。

根据上述文档,这意味着 Column 小部件在垂直方向上不受约束。

另一方面,不是列本身,而是它的子列,不受高度限制。这解释了为什么Center在垂直方向上收缩以匹配其子项。