flutter - “在布局期间,RenderStack 对象被赋予了无限大小”当在堆栈中使用定位时
问题描述
我正在创建一个Stack
在Container
. 在小部件内部有Stack
一个动态,它将 粘贴到.Column
Positioned
Column
Bottom
我正在尝试将其包装Stack
在一个SingleChildScrollView
中,如果动态Column
将有很多孩子,它将能够滚动。
但是在我添加滚动视图后,我收到了这个错误消息:
RenderStack object was given an infinite size during layout.
解决方案
scrollView 没有高度,它将为其子级使用无限高度。因此,如果您需要,堆栈应该被包裹在一个已知高度的 sizedBox 中。如果您希望堆栈填满屏幕,则完全删除 singleChildScrollview。如果您希望堆栈可以从内部滚动。只需在堆栈中添加 SingleChildScrollView
return Scaffold(
body: Container(
color: Colors.blue[100],
child: Stack(
children: [
Positioned.fill(child: SingleChildScrollView(child: MyColumn()))
],
),
),
);
编辑 1:好的,问题出在布局本身。由于您仅使用堆栈来定位图像。并且您知道图像的宽度和高度,并且背景形状填充了所有项目。我们可以
仅将堆栈隔离到图像,并使用填充和一些计算以类似的方式构建布局。
然后在普通列中渲染其他所有内容
推荐阅读
- ios - 如何触发 Swift 点击手势识别器?
- python - 检查谷歌日历中是否已经存在谷歌事件
- php - 在 css 内容中查找相对路径
- css - 引导响应表上的粘滞表标题
- java - Swing & JavaFX:如何将 JavaFX MouseEvent 转换为 Swing MouseEvent?
- python - Python中的Smartsheet库:模块'smartsheet.sheets'没有属性'sheets'
- react-select - react-select 不更改远程 url 链接字段
- c++ - 错误 C2131:创建结构数组时,表达式未计算为常量
- flutter - SetState 不更新小部件
- azure - 删除/删除 Azure AlertRule