我尝试做一个小部件,显示两个列表视图(一个在组标题下,另一个在警报标题下),具有最小和最大高度。
我已经通过一个ConstrainedBox
Package 了所有的东西,但是我一直无法得到一个最小的高度工作。理想的是,我希望列表喜欢所有的东西都收缩,如果有更少的项目在两个列表。
例如,在下面的屏幕截图中,一个列表中只有两个项目,而另一个列表中没有任何项目,因此我希望将整个小部件缩小到大约当前大小的一半
从我在小部件检查器中看到的情况来看,列表本身并没有占用比它所需要的更多的空间,但是列似乎占用了父约束允许的所有空间。我试过扰乱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(
...
))
],
),
),
),
],
),
);
建议后编辑:
1条答案
按热度按时间juud5qan1#
试试这个
crossAxisAlignment: CrossAxisAlignment.stretch
mainAxisSize: MainAxisSize.min
添加到列中使列表大小相同。不确定是否有直接的方法。
我能想到的一个方法是将两个列表的
itemCount
设置为包含最多项的列表的长度,并且在itemBuilder
中,当索引中没有可显示的项时,返回一个空的ListTile。