[英]In Flutter, how can I make a scrollable view of multiline text take up all the available horizontal space, as part of a column?
[英]How to create a scrollable Column in Flutter that if it doesn't take up all the space it expands somewhere?
我正在尝试创建一个可滚动的列,如果它没有填满,则在屏幕底部有一个小部件。 但是,如果它滚动。
首先,我尝试使用一个带有MainAxisSize.max
的简单Column
并使用一个空Container
进行Expand
,在该列溢出之前效果很好。
[...]
Column(
mainAxisSize: MainAxisSize.max,
children: [
MyWidget(),
MyWidget(),
[...],
MyWidget(),
Expand(child: Container()),
ElevatedButton()
],
)
然后我搜索并发现使Column
可滚动的推荐解决方案是SingleChildScrollView
。 这使列中的所有小部件都消失了(我仍然不确定为什么),直到我删除了Expand
,它虽然解决了一个问题,但引入了另一个问题。
[...]
SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
MyWidget(),
MyWidget(),
[...],
MyWidget(),
// Expand(child: Container()),
ElevatedButton()
],
)
)
所以我的问题是,如何使 Column 既可滚动又不需要所有空间来扩展以便最后一个子项位于屏幕底部?
IntrinsicHeight
使用成本太高,但在这种情况下您别无选择。 尝试这个:
LayoutBuilder(builder: (context, constraint) {
return SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(minHeight: constraint.maxHeight),
child: IntrinsicHeight(
child: Column(
children: [
Container(
color: Colors.red,
height: 400,
width: double.infinity,
),
Expanded(
child: Container(
color: Colors.blue,
width: double.infinity,
),
),
],
),
),
),
);
})
在此示例中,如果您为蓝色container
设置高度,您将看到scrollview
有效,如果您在其上使用Expanded
,它会采用可用大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.