最佳答案
我不明白如何使用 LayoutBuilder
来获得 Widget 的高度。
我需要显示窗口小部件的列表并得到它们的高度,这样我就可以计算一些特殊的滚动效果。我正在开发一个包,其他开发人员提供小部件(我不控制他们)。我读到 LayoutBuilder 可以用来获得高度。
在一个非常简单的例子中,我试图将 Widget 包装在 LayoutBuilder.builder 中并将其放入 Stack 中,但是我总是得到 minHeight
0.0
和 maxHeight
INFINITY
。我在滥用 LayoutBuilder 吗?
编辑 : 看来 LayoutBuilder 是行不通的,我发现 CustomSingleChildLayout几乎是一个解决方案。
我扩展了那个委托,并且能够在 getPositionForChild(Size size, Size childSize)
方法中获得小部件的高度。但是,调用的第一个方法是 Size getSize(BoxConstraints constraints)
,作为约束,我得到0到 INFINITY,因为我将这些 CustomSingleChildLayouts 放在 ListView 中。
我的问题是 SingleChildLayoutGenerategetSize
的操作就像它需要返回视图的高度一样。那个时候我不知道一个孩子的身高。我只能返回 straints.small (0,高度为0) ,或者 straints.best (无穷大) ,这会导致应用程序崩溃。
文件中甚至写道:
但是父母的大小不能取决于孩子的大小。
这是个奇怪的限制。