我正在尝试获取constrains.maxHeight。
这是我使用的代码:
LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
print(constraints.maxHeight);
return Column(
children: <Widget>[
LayoutBuilder(builder:
(BuildContext context, BoxConstraints constraints) {
print(constraints.maxHeight);
return Text(constraints.maxHeight.toString());
}),
],
);
}),
第一个给出:812,但是第二个LayoutBuilder提供无限。 (我的代码已简化,我在列中也使用了其他东西,但要测试,我只将LayoutBuilder放在其中。)
我在做什么错了?
谢谢!
答案 0 :(得分:1)
对于放置在Column
中的元素,约束是无限的或无界的。用LayoutBuilder
小部件包裹Expanded
并尝试。
在Flutter中,小部件由其基础的RenderBox对象呈现。渲染框由其父级赋予约束,并在这些约束内自行调整大小。约束包括最小和最大宽度和高度;大小由特定的宽度和高度组成。
通常,根据它们处理约束的方式,有三种类型的盒子:
那些试图变得尽可能大的人。例如,Center和ListView使用的框。 那些试图与孩子一样大的孩子。例如,“变换”和“不透明度”使用的框。 那些试图成为特定尺寸的人。例如,图像和文本使用的框。 一些小部件(例如Container)根据其构造函数参数的不同而有所不同。对于Container,默认情况下尝试使其尽可能大,但是例如,如果给它一个宽度,它将尝试遵循该宽度并保持该特定大小。
其他(例如行和列(柔性框))根据它们的约束而有所不同 给定,如下面“ Flex”部分所述。