【发布时间】:2023-02-02 20:12:00
【问题描述】:
我正在尝试制作一个显示两个列表视图(一个在组标题下,另一个在警报标题下)的小部件,具有最小和最大高度。
我已经设法通过 ConstrainedBox 包装所有东西来获得最大高度,但是我无法获得最小高度。理想情况下,如果两个列表中的项目都较少,我希望列表喜欢所有内容。
例如,在下面的屏幕截图中,一个列表中只有两个项目,另一个列表中没有,所以我希望整个小部件缩小到当前大小的大约一半
从我在 Widget Inspector 中看到的情况来看,列表本身并没有占用比它需要更多的空间,但是 Column 似乎占用了父约束允许的所有空间。我试过弄乱mainAxisSize: MainAxisSize.min,,但这似乎没有任何效果。
如何防止此列占用所有额外空间?
return ConstrainedBox(
constraints: const BoxConstraints(maxHeight: 300, minHeight: 50),
child: Row(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Flexible(
flex: 1,
child: Card(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Padding(padding: EdgeInsets.all(10), child: Text("Groups")),
const Divider(),
ListView.builder(
shrinkWrap: true,
itemCount: 2,
itemBuilder: (context, index) => ListTile(
...
))
],
),
),
),
Flexible(
flex: 1,
child: Card(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Padding(padding: EdgeInsets.all(10), child: Text("Alerts")),
const Divider(),
ListView.builder(
shrinkWrap: true,
itemCount: 2,
itemBuilder: (context, index) => ListTile(
...
))
],
),
),
),
],
),
);
【问题讨论】: