我正在尝试获取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放在里面了。)
我究竟做错了什么?
谢谢!
对于放置在 a 中的元素,约束是无穷大或无界的Column。LayoutBuilder用Expanded小部件包裹并尝试。
在 Flutter 中,小部件由其底层的 RenderBox 对象呈现。渲染框由它们的父级给出约束,并在这些约束内调整自己的大小。约束包括最小和最大宽度和高度;尺寸由特定的宽度和高度组成。
一般来说,就如何处理约束而言,有三种盒子:
那些试图变得尽可能大的人。比如Center和ListView使用的boxes。那些试图和他们的孩子一样大的人。例如,Transform 和 Opacity 使用的框。那些试图成为特定尺寸的。例如,Image 和 Text 使用的框。一些小部件,例如 Container,根据它们的构造函数参数因类型而异。在 Container 的情况下,它默认尝试尽可能大,但是如果你给它一个宽度,例如,它会尝试尊重它并成为那个特定的大小。
其他的,例如 Row 和 Column(弹性框)根据它们给定的约束而变化,如下面的“Flex”部分所述。
| 归档时间: |
|
| 查看次数: |
1634 次 |
| 最近记录: |