我显示其中带有列表的对话框。
showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: Text(select_conference),
content: ListView.separated(
itemCount: selected.length,
separatorBuilder: (context, index) => CommonDivider(),
itemBuilder: (context, index) => ListTile(...),
),
);
});
但是无论有多少元素-对话框都会填充所有可用高度。有什么解决方案可以解决此问题,而无需计算列表元素的高度?
答案 0 :(得分:3)
您可以将其包装为SizedBox
或ConstrainedBox
ConstrainedBox(
constraints: BoxConstraints(maxHeight: 100.0),
child: AlertDialog(
...
),
);
或者,您可以在shrinkWrap
中将true
设置为ListView
,以便占用最少的垂直空间
ListView(
shrinkWrap: true,
...
)
答案 1 :(得分:3)
用Column
包装内容,并将mainAxisSize
设置为MainAxisSize.min
:
AlertDialog(
content: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
//your content
],
),
答案 2 :(得分:0)
Dialog
的 insetPadding 属性控制对话框周围的填充,因此您可以设置值以有效减少对话框的高度/宽度,例如
showDialog(
context: context,
builder: (context) {
return AlertDialog(
insetPadding: EdgeInsets.symmetric(
horizontal: 50.0,
vertical: 100.0,
),
title: Text('...'),
content: Text('...'),
);
});