showAlertDialog static method
void
showAlertDialog(
- BuildContext context,
- SilAlertDialogData data, {
- Function? cancelFunc,
- Function? confrimFunc,
- Widget? titleWidget,
- Widget? contentWidget,
- List<
Widget> ? actionsWidget, - TextAlign? contentTextAlign,
- bool? confrimCanPop = true,
- TextStyle? titleStyle,
- TextStyle? contentStyle,
- TextStyle? cancelButtonStyle,
- TextStyle? confrimButtonStyle,
@description: 显示弹窗(有图标,内容字号16,居中;其他,内容字号14,多行左对齐,两行居中) @param { data 弹窗数据 cancelFunc 取消操作 confrimFunc 确认操作 titleWidget 自定义标题 contentWidget 自定义内容 actionsWidget 自定义底部操作按钮 contentTextAlignment 内容对齐方式 titleStyle 标题文字样式 contentStyle 内容文字样式 cancelButtonStyle 取消按钮文字样式 confrimButtonStyle 确定按钮文字样式 confrimCanPop 点击确认按钮时是否退出,默认退出 } @return {void}
Implementation
static void showAlertDialog(
BuildContext context,
SilAlertDialogData data, {
Function? cancelFunc,
Function? confrimFunc,
Widget? titleWidget,
Widget? contentWidget,
List<Widget>? actionsWidget,
TextAlign? contentTextAlign,
bool? confrimCanPop = true,
TextStyle? titleStyle,
TextStyle? contentStyle,
TextStyle? cancelButtonStyle,
TextStyle? confrimButtonStyle,
}) {
Color fontColor = Color.fromRGBO(51, 51, 51, 1);
if (SilAlertDialogInfo().mode == AlertDialogMode.Dark) {
fontColor = Colors.white;
}
// 标题
Widget? title;
if (titleWidget != null) {
title = titleWidget;
} else if (data.title != null && data.title!.length > 0) {
title = Container(
child: Text(
data.title!,
textAlign: TextAlign.center,
style: titleStyle ??
(SilAlertDialogInfo().titleStyle ??
TextStyle(
color: fontColor,
fontSize: 17.sp,
fontWeight: FontWeight.bold)),
));
}
// 内容
Widget? content;
if (contentWidget != null) {
content = contentWidget;
} else if (data.content != null && data.content!.length > 0) {
content = Container(
child: Text(
data.content!,
textAlign: contentTextAlign ?? TextAlign.center,
style: contentStyle ??
(SilAlertDialogInfo().contentStyle ??
TextStyle(height: 1.4, color: fontColor, fontSize: 14.sp)),
));
}
// 底部操作按钮
List<Widget> actions = [];
if (actionsWidget != null && actionsWidget.length > 0) {
actions = actionsWidget;
} else {
// 按钮的宽度:如果两个按钮都存在,就平分;否则就铺满
double? buttonWidth;
if (data.cancelButtonTitle != null && data.confrimButtonTitle != null) {
buttonWidth = (MediaQuery.of(context).size.width -
SilAlertDialogInfo().horizontalMargin * 2 -
40) *
0.5;
}
// 取消按钮
if (data.cancelButtonTitle != null &&
data.cancelButtonTitle!.length > 0) {
actions.add(GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () {
if (Navigator.canPop(context)) Navigator.pop(context);
if (cancelFunc != null) cancelFunc();
},
child: Container(
alignment: Alignment.center,
height: SilAlertDialogInfo().buttonHeight,
width: buttonWidth,
child: Text(data.cancelButtonTitle!,
textAlign: TextAlign.center,
style: cancelButtonStyle ??
(SilAlertDialogInfo().cancelButtonStyle ??
TextStyle(color: fontColor, fontSize: 17.sp))))));
}
// 确认按钮
if (data.confrimButtonTitle != null &&
data.confrimButtonTitle!.length > 0) {
actions.add(GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () {
if (confrimCanPop == true) {
if (Navigator.canPop(context)) Navigator.pop(context);
}
if (confrimFunc != null) confrimFunc();
},
child: Container(
alignment: Alignment.center,
height: SilAlertDialogInfo().buttonHeight,
width: buttonWidth,
child: Text(
data.confrimButtonTitle!,
textAlign: TextAlign.center,
style: confrimButtonStyle ??
(SilAlertDialogInfo().confrimButtonStyle ??
TextStyle(
color: fontColor,
fontSize: 17.sp,
fontWeight: FontWeight.w400)),
))));
}
}
show(context, title: title, content: content, actions: actions);
}