我对 Flutter 的渲染框感到困惑。 这是我的理解:布局算法从根开始,向下遍历小部件树,将约束传递给 child 。 Flex boxes,在它们的滚动方向上有边界约束,试图匹配它们的父约束。
考虑以下代码:
Widget build(BuildContext context) {
return LayoutBuilder(builder: (context, constraints) {
print("Parent");
print(constraints.maxWidth);
print(constraints.maxHeight);
return Column(children: [
LayoutBuilder(builder: (context, constraints) {
print("Child");
print(constraints.maxWidth);
print(constraints.maxHeight);
return SizedBox(
height: 12,
);
})
]);
});
}
这打印
flutter: Parent
flutter: 320.0
flutter: 568.0
flutter: Child
flutter: 320.0
flutter: Infinity
高度限制怎么突然变成无穷大了? 它不应该与其父级匹配并且是 568.0 吗?
最佳答案
LayoutBuilder 父级大小很重要,如果父级大小不明确,约束大小将是无穷大。例如,如果您使用脚手架包裹小部件,LayoutBuilder 会提供精确的尺寸。
关于dart - Flutter Renderboxes 传递 Infinity 高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54603633/