我想使列表视图与其内容具有相同的高度,
但总是得到水平视口被赋予无限高度错误
我试图定义一个高度作为列表视图父级的 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.horizontal
scrollDirection
它将采用所有可用高度,或者如果设置为verticle
则将采用所有可用宽度。 这是默认行为。
您可以将SingleChildScrollView
与Row
一起使用。
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
...OTHER CHILD,
SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: [
HorizontalList(),
SizedBox(width: 10),
HorizontalList(),
SizedBox(width: 10),
HorizontalList(),
],
),
)
],
),