show static method

Future<bool?> show({
  1. required BuildContext context,
  2. required String title,
  3. String? message,
  4. Widget? content,
  5. String confirmLabel = 'OK',
  6. String? cancelLabel = 'Cancel',
  7. bool isDestructive = false,
})

Implementation

static Future<bool?> show({
  required BuildContext context,
  required String title,
  String? message,
  Widget? content,
  String confirmLabel = 'OK',
  String? cancelLabel = 'Cancel',
  bool isDestructive = false,
}) {
  return showGeneralDialog<bool>(
    context: context,
    barrierDismissible: true,
    barrierLabel: 'Dismiss',
    barrierColor: const Color(0x88000000),
    transitionDuration: const Duration(milliseconds: 450),
    pageBuilder: (ctx, animation, secondaryAnimation) {
      return AnimatedBuilder(
        animation: animation,
        builder: (context, child) {
          final raw = animation.value.clamp(0.0, 1.0);
          // Custom spring-like curve with slight overshoot
          final t = Curves.elasticOut.transform(raw).clamp(0.0, 1.15);
          final opacity = Curves.easeOut.transform(raw).clamp(0.0, 1.0);
          final slide = 0.10 * (1.0 - t);
          final scale = 0.88 + 0.12 * t;
          return Transform.translate(
            offset: Offset(0, slide * MediaQuery.sizeOf(context).height),
            child: Transform.scale(
              scale: scale.clamp(0.88, 1.02),
              alignment: Alignment.bottomCenter,
              child: Opacity(
                opacity: opacity,
                child: child,
              ),
            ),
          );
        },
        child: SafeArea(
          child: Align(
            alignment: Alignment.bottomCenter,
            child: Padding(
              padding: EdgeInsets.only(
                left: KinSpacing.sm + MediaQuery.paddingOf(ctx).left,
                right: KinSpacing.sm + MediaQuery.paddingOf(ctx).right,
                bottom: KinSpacing.xs,
              ),
              child: KinDialog(
                title: title,
                message: message,
                content: content,
                confirmLabel: confirmLabel,
                cancelLabel: cancelLabel,
                onConfirm: () => Navigator.pop(ctx, true),
                onCancel: () => Navigator.pop(ctx, false),
                isDestructive: isDestructive,
              ),
            ),
          ),
        ),
      );
    },
  );
}