notice static method
Future<DialogResult?>
notice(
- BuildContext context, {
- required String title,
- required String content,
- String buttonName = "Got it",
- VoidCallback? onPressed,
- double indent = 28,
- bool barrierDismissible = true,
- bool? dark,
通知,公告。
用途
- 提示信息
- 展示内容
- 展示说明
For example:
DialogProvider.notice(
context,
title: "通知",
content: "Just told you.",
);
参数
|参数名|描述|是否必须|
- context 上下文
- title 信息标题
- content 信息内容
- buttonName 按钮文字。
- onPressed 按钮点击事件响应。
- indent 排版,左边缩进的距离。
- barrierDismissible 对话框空白区域点击关闭是否支持,默认支持点击空白区域可以关闭对话框。
- dark 是否强制指定夜间模式或者白天模式,不设置使用系统默认。

Implementation
static Future<DialogResult?> notice(
BuildContext context, {
required String title,
required String content,
String buttonName = "Got it",
VoidCallback? onPressed, // 自定义回调按钮监听。
double indent = 28,
bool barrierDismissible = true,
bool? dark,
}) {
// 取宽,屏幕的72%用于对话框。
double _width = MediaQuery.of(context).size.width * 0.72;
bool _dark = dark ?? (Theme.of(context).brightness == Brightness.dark);
Color _barrierColor = _dark ? Color(0xaa000000) : Color(0x9effffff);
Color _backgroundColor = _dark ? Colors.black45 : Colors.white60;
Color _fontColor = _dark ? Colors.white : Colors.black;
return showDialog<DialogResult>(
context: context,
// Color(0x9eB2EbF2) 忧郁蓝
barrierColor: _barrierColor,
barrierDismissible: barrierDismissible,
builder: (BuildContext context) {
return Dialog(
backgroundColor: _backgroundColor,
// 对话框区域背景色
elevation: 12.0,
insetPadding: EdgeInsets.zero,
clipBehavior: Clip.hardEdge,
shape: const RoundedRectangleBorder(borderRadius: _borderRadius),
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// title
Container(
width: _width,
padding: EdgeInsets.fromLTRB(indent, 28.0, 8.0, 8.0),
child: Text(
title,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 20.0,
color: _fontColor),
),
),
SizedBox(
width: _width,
child: Divider(
height: 18,
thickness: 1.8,
indent: indent,
color: _dark ? Colors.white : Colors.black87,
),
),
// content
Container(
width: _width,
padding: EdgeInsets.fromLTRB((indent + 8.0), 8.0, 8.0, 8.0),
child: Text(
content,
style: TextStyle(color: _fontColor),
),
),
// button
Container(
width: _width,
alignment: Alignment.centerRight,
padding: const EdgeInsets.only(right: 8.0),
child: TextButton(
child: Text(
buttonName,
style: TextStyle(
fontSize: 16.0,
color: Theme.of(context).primaryColor,
),
),
onPressed: onPressed ??
() {
Navigator.of(context)
.pop(DialogResult(status: true, code: 200));
},
),
)
],
),
);
},
);
}