我对颤动的渲染框感到困惑。这就是我所理解的:布局算法从根开始并遍历小部件树,将约束传递给子节点。 Flex框在其滚动方向的有限约束中尝试匹配其父约束。
请考虑以下代码:
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父级大小很重要,如果父级的大小不明确,则约束大小将为无穷大。例如,如果使用scaffold包装小部件,LayoutBuilder会提供精确的大小。