LayoutBuilder:constrains.maxHeight返回无穷大

时间:2019-12-28 09:25:39

标签: flutter dart

我正在尝试获取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放在其中。)

我在做什么错了?

谢谢!

1 个答案:

答案 0 :(得分:1)

对于放置在Column中的元素,约束是无限的或无界的。用LayoutBuilder小部件包裹Expanded并尝试。

  

在Flutter中,小部件由其基础的RenderBox对象呈现。渲染框由其父级赋予约束,并在这些约束内自行调整大小。约束包括最小和最大宽度和高度;大小由特定的宽度和高度组成。

     

通常,根据它们处理约束的方式,有三种类型的盒子:

     

那些试图变得尽可能大的人。例如,Center和ListView使用的框。   那些试图与孩子一样大的孩子。例如,“变换”和“不透明度”使用的框。   那些试图成为特定尺寸的人。例如,图像和文本使用的框。   一些小部件(例如Container)根据其构造函数参数的不同而有所不同。对于Container,默认情况下尝试使其尽可能大,但是例如,如果给它一个宽度,它将尝试遵循该宽度并保持该特定大小。

     

其他(例如行和列(柔性框))根据它们的约束而有所不同   给定,如下面“ Flex”部分所述。

documentation