[英]How to change the position of a dialogue box Flutter
我创建了一个对话框,当注册新用户时 Firestore 中存在一个数字时会显示该对话框。 但是,默认情况下 Android 似乎将对话框定位在显示屏的中央。 有没有办法 position 对话框让我们在调用它的小部件的 position 说,在我的情况下,它是 Raised 按钮回调。 还想知道如何在按钮上方的弹出窗口中显示验证消息,
下面是我的代码示例。
numberExistsDialog(BuildContext context) {
var numberDialog = AlertDialog(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),
title: Text(
'Number Already Exists',
style: TextStyle(color: Colors.red),
textAlign: TextAlign.center,
),
content: Text(
'Use another number',
textAlign: TextAlign.center,
),
);
showDialog(
context: context,
builder: (BuildContext context) {
return numberDialog;
});
}
我不知道它是否可以用现有的AlertDialog来完成,但我曾经通过制作自定义对话框更改了Dialog的alignment。
您可以使用Align
小部件并根据需要对齐对话框小部件。 在示例中,我将其设置为Alignment(0, 1)
的bottomCenter
。
示例代码:
Align(
alignment: Alignment(0, 1),
child: Material(
shape:
RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),
child: Padding(
padding: const EdgeInsets.all(32.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text(
'Number Already Exists',
style: TextStyle(color: Colors.red),
textAlign: TextAlign.center,
),
Text(
'Use another number',
textAlign: TextAlign.center,
),
],
),
),
),
);
PS:您可以根据需要设置 TextStyle ,因为
AlertDialog
的title
和content
TextStyle 默认设置自 Flutter 本身。
编辑:
你可以像下面这样使用它:
numberExistsDialog(BuildContext context) {
var numberDialog = Align(
alignment: Alignment(0, 1),
child: Material(
shape:
RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),
child: Padding(
padding: const EdgeInsets.all(32.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text(
'Number Already Exists',
style: TextStyle(color: Colors.red),
textAlign: TextAlign.center,
),
Text(
'Use another number',
textAlign: TextAlign.center,
),
],
),
),
),
);
showDialog(
context: context,
builder: (BuildContext context) {
return numberDialog;
},
);
}
截屏:
使用带有showGeneralDialog
的开箱即用的 showGeneralDialog。
Scaffold(
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
showGeneralDialog(
context: context,
barrierColor: Colors.black54,
barrierDismissible: true,
barrierLabel: 'Label',
pageBuilder: (_, __, ___) {
return Align(
alignment: Alignment.bottomLeft,
child: Container(
color: Colors.blue,
child: FlutterLogo(size: 150),
),
);
},
);
},
),
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.