我有一个带有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(
...
)
],
);
});
似乎是一样的。
反正有定制这些属性吗?
不可以。这些不是可定制的。他们是为了尊重材料设计原则。
如果你想要一个自定义设计,你可以根据AlertDialog
和/或Align
制作自己的模态
DecoratedBox
和SimpleDialog
旨在满足一系列特定需求。它们具有一定程度的自定义,但最终它们只是为了显示简单的弹出对话框,为用户提供一些信息并提示对话框响应(即“是”,“否”,“取消”,“保存”,等等。)。
如果您想要一个更可自定义的弹出对话框,则需要创建自己的弹出对话框。但从好的方面来说,这真的很简单。让AlertDialog
中的构建器返回一个showDialog
小部件,并将子集设置为您想要的任何内容:
Dialog
显然你需要重新创建标题栏和操作栏之类的东西,但你可以破解showDialog(
context: context,
builder: (BuildContext cxt) {
return Dialog(
child: Container(
...
),
);
},
);
和SimpleDialog
的源代码并复制他们在那里的东西,或者你可以自己推出解决方案。
您可以复制和修改AlertDialog
的代码来创建自己的代码。
它并不像你想象的那么可怕。您只需克隆Dialog.dart,并使用Align替换Center小部件。
当然也要重命名;例如MyDialog,myShowDialog,MySimpleDialog。
是的,就这么简单。
如果你在滚动,那么如何添加Align小部件的对齐参数作为额外的...