如何限制AlertDialog的高度

时间:2018-10-09 08:48:06

标签: flutter

我显示其中带有列表的对话框。

    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(...),
            ),
          );
        });

但是无论有多少元素-对话框都会填充所有可用高度。有什么解决方案可以解决此问题,而无需计算列表元素的高度?

3 个答案:

答案 0 :(得分:3)

您可以将其包装为SizedBoxConstrainedBox

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)

DialoginsetPadding 属性控制对话框周围的填充,因此您可以设置值以有效减少对话框的高度/宽度,例如

    showDialog(
        context: context,
        builder: (context) {
          return AlertDialog(
            insetPadding: EdgeInsets.symmetric(
              horizontal: 50.0,
              vertical: 100.0,
            ),
            title: Text('...'),
            content: Text('...'),
          );
        });