如何自定义对话框的位置,大小和背景?

问题描述 投票:1回答:4

我有一个带有FAB的主屏幕,当它被按下时,我想显示一个供用户输入的对话框。

目前我正在使用Qazxswpoi和SimpleDialog。

showDialog()

但是,我似乎无法用它来定制几乎所有东西(较小的,角落弯曲的并且位于屏幕下方)。 showDialog( context: context, builder: (BuildContext context) { return SimpleDialog( title: NormalText('New Counter Item'), contentPadding: EdgeInsets.fromLTRB(24.0, 0.0, 24.0, 24.0), children: <Widget>[ Container( ... ) ], ); }); 似乎是一样的。

反正有定制这些属性吗?

flutter flutter-layout
4个回答
-2
投票

不可以。这些不是可定制的。他们是为了尊重材料设计原则。

如果你想要一个自定义设计,你可以根据AlertDialog和/或Align制作自己的模态


2
投票

DecoratedBoxSimpleDialog旨在满足一系列特定需求。它们具有一定程度的自定义,但最终它们只是为了显示简单的弹出对话框,为用户提供一些信息并提示对话框响应(即“是”,“否”,“取消”,“保存”,等等。)。

如果您想要一个更可自定义的弹出对话框,则需要创建自己的弹出对话框。但从好的方面来说,这真的很简单。让AlertDialog中的构建器返回一个showDialog小部件,并将子集设置为您想要的任何内容:

Dialog

显然你需要重新创建标题栏和操作栏之类的东西,但你可以破解showDialog( context: context, builder: (BuildContext cxt) { return Dialog( child: Container( ... ), ); }, ); SimpleDialog的源代码并复制他们在那里的东西,或者你可以自己推出解决方案。


0
投票

您可以复制和修改AlertDialog的代码来创建自己的代码。


0
投票

它并不像你想象的那么可怕。您只需克隆Dialog.dart,并使用Align替换Center小部件。

当然也要重命名;例如MyDialog,myShowDialog,MySimpleDialog。

是的,就这么简单。

如果你在滚动,那么如何添加Align小部件的对齐参数作为额外的...

© www.soinside.com 2019 - 2024. All rights reserved.