Flutter Renderboxes 传递无限高度?

dee*_*y42 5 dart flutter

我对颤振的渲染框感到困惑。这是我的理解:布局算法从根开始,向下遍历小部件树,将约束传递给子项。弹性框,在其滚动方向的有界约束中,尝试匹配它们的父约束。

考虑以下代码:

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,
          );
        })
      ]);
    });
  }
Run Code Online (Sandbox Code Playgroud)

这打印

flutter: Parent
flutter: 320.0
flutter: 568.0
flutter: Child
flutter: 320.0
flutter: Infinity
Run Code Online (Sandbox Code Playgroud)

高度限制怎么突然变成无穷大了?它不应该匹配它的父级并且是 568.0 吗?

Hos*_*ein 1

LayoutBuilder 父级大小很重要,如果父级大小不清楚,约束大小将是无穷大。例如,如果您使用脚手架包装您的小部件,LayoutBuilder 会提供精确的尺寸。