使用Flutter,我如何动态分配Column中水平ListView的高度,以准确地占用ListView项所需的高度。
例如,下面的代码片段显示了一个列,其中有两个主要的子小部件,一个ColoredBox
和一个ListView.Builder
。ListView.builder
由SizedBox
Package ,SizedBox
指定其高度为40,而ColoredBox
由Expanded
Package ,允许其占用Column中的所有剩余高度。
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Expanded(
child: ColoredBox(
color: Colors.green,
child: Text('Expanded top widget'),
),
),
SizedBox(
height: 40,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 5,
itemBuilder: (BuildContext context, int index) {
return Card(
child: Padding(
padding: const EdgeInsets.all(8),
child: Text('Card $index'),
),
);
},
),
)
],
)
这运行时没有错误,但需要ListView.builder
被SizedBox
Package 以定义显式高度,如果SizedBox
被删除,则会发生unbounded height异常。
我试图让ListView根据它的子元素占用一个动态的高度,但我在让它工作时遇到了麻烦。
我试过将ListView的shrinkWrap
设置为true,但没有帮助。
我还验证了您可以将ListView和上面的Text
小部件 Package 在Expanded
中,并为它们分配flex
值,以根据屏幕的百分比为它们分配高度,而不会出错,但这仍然不是我想要实现的。
有没有一种方法可以让ListView.builder
根据其子元素(在本例中是Cards)动态分配其高度,而不像在原生Android XML布局文件中将视图的高度设置为“wrap_content”那样显式地以像素或屏幕高度百分比分配其高度?
1条答案
按热度按时间km0tfn4u1#
如果它工作箭头向上有美好的一天