showConfirmationSheet function

void showConfirmationSheet({
  1. required BuildContext context,
  2. required String title,
  3. required String message,
  4. dynamic popOnConfirm = true,
  5. ConfirmationSheetType type = ConfirmationSheetType.normal,
  6. IconData icon = Icons.info_outline,
  7. required FutureOr<void> onConfirm(),
  8. VoidCallback? onCancel,
  9. String? confirmText,
  10. String? cancelText,
  11. Axis buttonLayout = Axis.horizontal,
})

Implementation

void showConfirmationSheet({
  required BuildContext context,
  required String title,
  required String message,
  final popOnConfirm = true,
  ConfirmationSheetType type = ConfirmationSheetType.normal,
  IconData icon = Icons.info_outline,
  required FutureOr<void> Function() onConfirm,
  VoidCallback? onCancel,
  final String? confirmText,
  final String? cancelText,
  final Axis buttonLayout = Axis.horizontal,
}) {
  showModalBottomSheet(
    showDragHandle: true,
    context: context,
    builder: (context) => SafeArea(
      child: Padding(
        padding: const EdgeInsets.symmetric(
          horizontal: 22,
        ),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            Icon(icon, size: 65, color: type.color(context)),
            Text(title).titleLarge(context).bold(),
            const SizedBox(height: 4),
            Text(message),
            const SizedBox(height: 16),
            Padding(
              padding: const EdgeInsets.only(bottom: 16, top: 16),
              child: buttonLayout == Axis.horizontal
                  ? Row(
                      spacing: 10,
                      mainAxisAlignment: MainAxisAlignment.center,
                      crossAxisAlignment: CrossAxisAlignment.center,
                      children: [
                        JetButton.outlined(
                          text: cancelText ?? context.jetI10n.cancel,
                          onTap: onCancel ?? () => Navigator.pop(context),
                          foregroundColor: type.color(context),
                          borderColor: type.color(context),
                        ),
                        JetButton.filled(
                          text: confirmText ?? context.jetI10n.confirm,
                          onTap: () async {
                            await onConfirm();
                            if (popOnConfirm && context.mounted) {
                              Navigator.pop(context);
                            }
                          },
                          backgroundColor: type.color(context),
                        ),
                      ],
                    )
                  : Column(
                      spacing: 10,
                      mainAxisAlignment: MainAxisAlignment.center,
                      crossAxisAlignment: CrossAxisAlignment.stretch,
                      children: [
                        JetButton.filled(
                          text: confirmText ?? context.jetI10n.confirm,
                          onTap: () async {
                            await onConfirm();
                            if (popOnConfirm && context.mounted) {
                              Navigator.pop(context);
                            }
                          },
                          backgroundColor: type.color(context),
                        ),
                        JetButton.textButton(
                          text: cancelText ?? context.jetI10n.cancel,
                          onTap: onCancel ?? () => Navigator.pop(context),
                          foregroundColor: type.color(context),
                        ),
                      ],
                    ),
            ),
          ],
        ),
      ),
    ),
  );
}