LayoutBuilder:constrains.maxHeight 返回无穷大

Kar*_*dts 4 dart flutter

我正在尝试获取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());
                    }),
                  ],
                );
              }),
Run Code Online (Sandbox Code Playgroud)

第一个给出:812,但第二个 LayoutBuilder 给出无穷大。(我的Code简化了,列中其他东西我也用了,但是tot test,我只把LayoutBuilder放在里面了。)

我究竟做错了什么?

谢谢!

cmd*_*ter 9

对于放置在 a 中的元素,约束是无穷大或无界的ColumnLayoutBuilderExpanded小部件包裹并尝试。

在 Flutter 中,小部件由其底层的 RenderBox 对象呈现。渲染框由它们的父级给出约束,并在这些约束内调整自己的大小。约束包括最小和最大宽度和高度;尺寸由特定的宽度和高度组成。

一般来说,就如何处理约束而言,有三种盒子:

那些试图变得尽可能大的人。比如Center和ListView使用的boxes。那些试图和他们的孩子一样大的人。例如,Transform 和 Opacity 使用的框。那些试图成为特定尺寸的。例如,Image 和 Text 使用的框。一些小部件,例如 Container,根据它们的构造函数参数因类型而异。在 Container 的情况下,它默认尝试尽可能大,但是如果你给它一个宽度,例如,它会尝试尊重它并成为那个特定的大小。

其他的,例如 Row 和 Column(弹性框)根据它们给定的约束而变化,如下面的“Flex”部分所述。

文件