对话框会通知用户需要确认的情况。 对话框有可选标题和可选的操作列表。 标题显示在内容上方,操作显示在内容下方。
如果内容太大而无法垂直放入屏幕,则对话框将显示标题和操作,并让内容溢出,这是很少需要的。 考虑使用滚动窗口小部件来显示内容,例如SingleChildScrollView,以避免溢出。 (但是,请注意,由于AlertDialog尝试使用其子项的内部维度来调整自身大小,因此使用惰性视口的小部件(如ListView,GridView和CustomScrollView)将无法工作。如果这是一个问题,请考虑直接使用Dialog。)
对于为用户提供多个选项之间选择的对话框,请考虑使用SimpleDialog。
通常作为子窗口小部件传递给showDialog,后者显示对话框。
构造函数
// 构造函数
AlertDialog({Key key,
// 标题
Widget title,
// 标题四周填充
EdgeInsetsGeometry titlePadding,
// 内容
Widget content,
// 内容四周填充
EdgeInsetsGeometry contentPadding: const EdgeInsets.fromLTRB(24.0, 20.0, 24.0, 24.0),
// 动作按钮
List<Widget> actions,
String semanticLabel,
// 边框形状
ShapeBorder shape
})
例子:
// async 异步跳转时可以接收子页面返回数据
Future<void> _neverSatisfied() async {
// showDialog 必须要加,否则不会出现对话框
return showDialog<void>(
// context 上下文,路由返回等时使用
context: context,
// 设为true则点击对话框外时也会关闭对话框
barrierDismissible: false,
builder: (BuildContext context) {
// 对话框
return AlertDialog(
// 标题
title: Text('Rewind and remember'),
// 内容
content: SingleChildScrollView(
child: ListBody(
children: <Widget>[
Text('You will never be satisfied.'),
Text('You\’re like me. I’m never satisfied.'),
],
),
),
// 下方按钮
actions: <Widget>[
FlatButton(
child: Text('Regret'),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
}
官网文档地址:
https://docs.flutter.io/flutter/material/AlertDialog-class.html