gpt4 book ai didi

flutter - 如何使 flutter 中的水平 ListView 的高度与其 child 的最大高度一样高,放置在一列中?

转载 作者:行者123 更新时间:2023-12-05 01:53:26 25 4
gpt4 key购买 nike

我在一列中放置了一个水平 ListView,我希望它的高度与它所需要的一样高。一种方法是将 ListView 包裹在 SizedBox 中,并为其指定一个特定的硬编码 height。此外,将其包装在 Expanded 小部件中将导致 ListView 在列中占用额外的可用空间。但是,我希望它自动达到它只需要的高度。如何实现?谢谢。

示例代码如下:

@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
children: [
Text("Hi there!"),
SizedBox(
height: 50,
child: ListView(
scrollDirection: Axis.horizontal,
shrinkWrap: true,
children: List.generate(
4,
(index) => Text("Item $index "),
),
),
),
ElevatedButton(
onPressed: () {},
child: Text("This is a button"),
),
],
),
),
),
);
}

输出是: enter image description here

但我想要的是(ListView 周围没有更多或更少的空间): enter image description here

最佳答案

不幸的是,这是不可能的。 ListView 可能有很多项目(甚至是无限的),因此找出“最大的一个”需要遍历每个项目,这与使用 ListView< 的要点背道而驰.

如果你只有几个项目,你可以使用 Row 小部件。如果您需要滚动,请使用 SingleChildScrollView 包裹 Row

例如:

Column(
children: [
Container(
color: Colors.green.shade100,
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: [
FlutterLogo(),
FlutterLogo(size: 100),
for (int i = 0; i < 50; i++) FlutterLogo(),
],
),
),
),
const Text('The row has ended.'),
],
)

演示:

demo gif

关于flutter - 如何使 flutter 中的水平 ListView 的高度与其 child 的最大高度一样高,放置在一列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71070085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com