Flutter: 如何更改AlertDialog的宽度?

120
我想知道如何更改AlertDialog的默认宽度,我只成功地更改了边框半径:

这是我的代码:

showDialog(
       context: context,
       builder: (_) =>
            new AlertDialog(
               shape: RoundedRectangleBorder(
                   borderRadius: BorderRadius.all(Radius.circular(10.0))
               ),
               content: ProductPreviewScreen(),
            )
    );

期望的结果:

在此输入图片描述 有任何想法吗?

27个回答

0

/// 这对我有用,粘贴你的代码并查看结果

未来 _showDialog() async { return showDialog( context: context,

barrierDismissible: true,
builder: (BuildContext context) {
  return Center(
    child: Column(
      mainAxisSize: MainAxisSize.min,
      children: [
        Material(
          color: Colors.transparent,
          child: Container(
            padding: EdgeInsets.fromLTRB(5, 10, 5, 10),
            decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.circular(5),
            ),
            alignment: Alignment.center,
            width: MediaQuery.of(context).size.width,
            margin: EdgeInsets.all(10),
            /// paste your item body 
            child:body,
          ),
        ),
      ],
    ),
  );
},

); }


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

0
要在对话框的宽度和高度上灵活调整内容,请使用以下方法:如果您希望自己设置对话框的高度,可以在容器中添加高度 MediaQuery.of(context).size.height,然后在 insetPadding 中添加垂直填充。
showDialog(
  context: context,
  builder: (BuildContext context) {
    return SimpleDialog(
      insetPadding: EdgeInsets.symmetric(horizontal: 20),
      contentPadding: EdgeInsets.all(20),
      children:[
        Container(
            width: MediaQuery.of(context).size.width,
            child: widget
        )
      ]
    );
  },
);

0
你可以轻松地将你的内容包裹在AlertDialog中,使用SizedBox小部件来设置所需的大小。
 return AlertDialog(
            content: SizedBox(
              width: MediaQuery.of(context).size.width,
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                mainAxisSize: MainAxisSize.min,
                children: <Widget>[

...等等


0
AlertDialog(
   insetPadding: EdgeInsets.all(12), // Outside Padding
   contentPadding: EdgeInsets.all(12), // Content Padding
   ....

你可以尝试使用0/任意数字来代替12。

-1

使用 width: MediaQuery.of(context).size.width 来增加警告框的宽度

示例:

return AlertDialog(
      title: Text("Select Birth Date"),
      content: Container(
        width: MediaQuery.of(context).size.width,
        height: 300,
        child: CupertinoDatePicker(
          mode: CupertinoDatePickerMode.date,
          initialDateTime: DateTime(1969, 1, 1),
          onDateTimeChanged: (DateTime newDateTime) {
            // Do something
           
          },
        ),
      ),
      actions: <Widget>[
        FlatButton(
          child: Text("Select"),
          onPressed: () {
            widget.onSelected(selectedDate);
            Navigator.pop(context);
            //.....
          },
        ),
      ],
    );

-1
在我的情况下,我是在对话框内使用列表视图,因此我没有在ListView中使用shrink wrap,希望这能帮助到某些人。
ListView.builder(
shrinkWrap : true...
...
};

-1
在警告框中,只需添加插入填充即可。
alertbox(
.. insetpadding: EdgeInsets.symmetric(horizontal:10),

..

),

它将改变宽度


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接