0

我被卡住了......这是我的代码分解:

 Column(
    children: [
      Column(
        children: [
          Text('Whyy'),
          Spacer(),
          Text('crash?'),
        ],
      ),
      Text('ok'),
    ],
  ),

这会因错误而崩溃:

RenderFlex 子项具有非零弹性,但传入的高度约束是无界的。

当列位于不提供有限高度约束的父级时,例如,如果它位于垂直可滚动中,它将尝试沿垂直轴收缩包裹其子级。在一个子节点上设置一个 flex(例如使用 Expanded)表示该子节点将展开以填充垂直方向上的剩余空间。这两个指令是互斥的。如果父级要收缩包裹其子级,则子级不能同时扩展以适应其父级。

但为什么?为什么这会崩溃?Parent-Column是在sScaffold里面body

我在这里想念什么?

如果您需要更多信息,请告诉我!

4

1 回答 1

1

这是因为内列对其高度没有任何限制,因此Spacer小部件可以占用无限大的空间。Expanded您可以通过用(或任何其他高度约束小部件,如)包装内列的高度来设置实际约束SizedBox

Column(
  children: [
    Expanded(
      child: Column(
        children: [
          Text('No'),
          Spacer(),
          Text('crash!'),
        ],
      ),
    ),
    Text('ok'),
  ],
),
于 2021-11-30T22:51:45.970 回答