首页 > 解决方案 > “在布局期间,RenderStack 对象被赋予了无限大小”当在堆栈中使用定位时

问题描述

我正在创建一个StackContainer. 在小部件内部有Stack一个动态,它将 粘贴到.ColumnPositionedColumnBottom

我正在尝试将其包装Stack在一个SingleChildScrollView中,如果动态Column将有很多孩子,它将能够滚动。

但是在我添加滚动视图后,我收到了这个错误消息:

RenderStack object was given an infinite size during layout.

标签: flutterdartflutter-layoutflutter-positioned

解决方案


scrollView 没有高度,它将为其子级使用无限高度。因此,如果您需要,堆栈应该被包裹在一个已知高度的 sizedBox 中。如果您希望堆栈填满屏幕,则完全删除 singleChildScrollview。如果您希望堆栈可以从内部滚动。只需在堆栈中添加 SingleChildScrollView

return Scaffold(
      body: Container(
        color: Colors.blue[100],
        child: Stack(
          children: [
            Positioned.fill(child: SingleChildScrollView(child: MyColumn()))
          ],
        ),
      ),
    );

编辑 1:好的,问题出在布局本身。由于您仅使用堆栈来定位图像。并且您知道图像的宽度和高度,并且背景形状填充了所有项目。我们可以

仅将堆栈隔离到图像,并使用填充和一些计算以类似的方式构建布局。

然后在普通列中渲染其他所有内容

我的实现https://dartpad.dev/230b14d8f0b22b45929a75c208786257


推荐阅读