如何使颤振列表视图高度与子高度(动态)相同



我想使列表视图与其内容具有相同的高度,
但总是得到水平视口被赋予无限高度错误
我试图定义一个高度作为列表视图父级的 SsizeBox,但这似乎很奇怪
所有项目都在直线下降
如何在不定义高度的情况下定义此列表视图(动态跟随内容高度)?
使用列表视图
之前的结果使用列表视图后(奇怪的外观)

有代码:

Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
...OTHER CHILD,
ListView(
scrollDirection: Axis.horizontal,
children: [
HorizontalList(),
SizedBox(width: 10),
HorizontalList(),
SizedBox(width: 10),
HorizontalList(),
],
),
],
),

有子组件:

Container(
width: 260,
height: 210,
decoration: BoxDecoration(
color: whiteColor,
borderRadius: BorderRadius.all(Radius.circular(14)),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 1,
blurRadius: 5,
offset: Offset(0, 0),
),
],
),
child: Column(
children: [
...OTHER CHILD,
],
),
);

ListView中设置shrinkWrap: true并用Flexible小部件包装ListView


Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
...OTHER CHILD,
Flexible(
child: ListView(
shrinkWrap: true,
scrollDirection: Axis.horizontal,
children: [
HorizontalList(),
SizedBox(width: 10),
HorizontalList(),
SizedBox(width: 10),
HorizontalList(),
],
),
),
],
),

这样ListView只会占用孩子需要的空间。

我想如果你使用这个

crossAxisAlignment: CrossAxisAlignment.stretch,

而不是这个

crossAxisAlignment: CrossAxisAlignment.start

然后它会起作用。

ListView将占用所有可用空间。

如果设置为Axis.horizontalscrollDirection它将采用所有可用高度,或者如果设置为verticle则将采用所有可用宽度。 这是默认行为。

您可以将SingleChildScrollViewRow一起使用。

Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
...OTHER CHILD,
SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: [
HorizontalList(),
SizedBox(width: 10),
HorizontalList(),
SizedBox(width: 10),
HorizontalList(),
],
),
)
],
),

最新更新