showERbAlertDialog<T extends Object?> function
Future<T?>
showERbAlertDialog<T extends Object?>({
- required BuildContext context,
- Widget? title,
- Widget content(
- BuildContext context
- EdgeInsetsGeometry titlePadding = EdgeInsets.zero,
- EdgeInsetsGeometry contentPadding = EdgeInsets.zero,
- ERbDialogData eRbDialogData = const ERbDialogData(),
- bool barrierDismissible = true,
Implementation
Future<T?> showERbAlertDialog<T extends Object?>({
required BuildContext context,
Widget? title,
Widget Function(BuildContext context)? content,
EdgeInsetsGeometry titlePadding = EdgeInsets.zero,
EdgeInsetsGeometry contentPadding = EdgeInsets.zero,
ERbDialogData eRbDialogData = const ERbDialogData(),
bool barrierDismissible = true,
}) async {
final reformedContentPadding = EdgeInsets.symmetric(
horizontal: contentPadding.horizontal / 2,
).copyWith(
top: title == null ? contentPadding.vertical / 2 : 0,
bottom: contentPadding.vertical / 2,
);
final horizontalActionPadding = eRbDialogData.actionsPadding.horizontal / 2;
final reformedActionsPadding = EdgeInsets.symmetric(
horizontal: horizontalActionPadding,
).copyWith(
top: title == null && content == null
? eRbDialogData.actionsPadding.vertical / 2
: 0,
bottom: eRbDialogData.actionsPadding.vertical / 2,
);
return showGeneralDialog<T>(
context: context,
barrierDismissible: barrierDismissible,
barrierLabel: '',
transitionBuilder: (context, a1, a2, widget) => Transform.scale(
scale: a1.value,
child: PopScope(
//This prevent closing the dialog when pressing device's back button
canPop: barrierDismissible,
child: ERbOverflowTransformBox(
transform: (constraints) =>
ConstraintsTransformBox.unmodified(constraints),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: AlertDialog(
title: title,
titlePadding: titlePadding,
content: content != null ? content(context) : null,
contentPadding: reformedContentPadding,
actions: eRbDialogData.actions?.call(context),
actionsPadding: reformedActionsPadding,
actionsAlignment: MainAxisAlignment.spaceAround,
insetPadding: eRbDialogData.insetPadding,
shape: eRbDialogData.shape,
backgroundColor: eRbDialogData.backgroundColor,
),
),
),
),
),
pageBuilder: (
BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
) =>
const SizedBox(),
);
}