showCustomAlertDialog static method
Future<void>
showCustomAlertDialog({
- required BuildContext context,
- required String title,
- required String cancelText,
- required String confirmText,
- required String description,
- required VoidCallback onConfirm,
- VoidCallback? onCancel,
- TextStyle? titleTextStyle,
- TextStyle? descriptionTextStyle,
- Color? cancelColor,
- Color? confirmColor,
Implementation
static Future<void> showCustomAlertDialog({
required BuildContext context,
required String title,
required String cancelText,
required String confirmText,
required String description,
required VoidCallback onConfirm,
VoidCallback? onCancel,
TextStyle? titleTextStyle,
TextStyle? descriptionTextStyle,
Color? cancelColor,
Color? confirmColor,
}) async {
final _appTheme = GBTheme.of(context);
void _closeDialog() {
Navigator.of(context, rootNavigator: true).pop();
}
//NOTE: Set up the buttons
Widget _cancelButton = TextButton(
onPressed: onCancel ?? _closeDialog,
style: TextButton.styleFrom(foregroundColor: cancelColor ?? _appTheme.textDisabled),
child: Text(cancelText),
);
Widget _continueButton = TextButton(
onPressed: () {
_closeDialog();
onConfirm();
},
style: TextButton.styleFrom(foregroundColor: confirmColor ?? _appTheme.accentError),
child: Text(confirmText),
);
//NOTE: Set up the AlertDialog
AlertDialog alert = AlertDialog(
backgroundColor: _appTheme.backgroundBase,
title: Text(title, style: titleTextStyle ?? _appTheme.textTheme.displaySmall),
content: Text(
description,
style:
descriptionTextStyle ??
_appTheme.textTheme.bodyMedium?.copyWith(color: _appTheme.textBase.withOpacity(.7)),
),
actions: [_cancelButton, _continueButton],
);
await showDialog(
context: context,
barrierDismissible: false,
builder: (context) {
return alert;
},
);
}