show static method

Future<DateTime?> show({
  1. required BuildContext context,
  2. DateTime? initialDate,
  3. DateTime? firstDate,
  4. DateTime? lastDate,
  5. String title = 'Select Date',
  6. String confirmLabel = 'Confirm',
  7. String cancelLabel = 'Cancel',
})

Implementation

static Future<DateTime?> show({
  required BuildContext context,
  DateTime? initialDate,
  DateTime? firstDate,
  DateTime? lastDate,
  String title = 'Select Date',
  String confirmLabel = 'Confirm',
  String cancelLabel = 'Cancel',
}) {
  return showGeneralDialog<DateTime>(
    context: context,
    barrierDismissible: true,
    barrierLabel: 'Dismiss',
    barrierColor: const Color(0x88000000),
    transitionDuration: const Duration(milliseconds: 400),
    pageBuilder: (ctx, animation, secondaryAnimation) {
      return AnimatedBuilder(
        animation: animation,
        builder: (context, child) {
          final t = KinMotion.fluidEnter.transform(animation.value.clamp(0.0, 1.0));
          final slide = 0.12 * (1.0 - t);
          final scale = 0.92 + 0.08 * t;
          return Transform.translate(
            offset: Offset(0, slide * MediaQuery.sizeOf(context).height),
            child: Transform.scale(
              scale: scale,
              alignment: Alignment.bottomCenter,
              child: Opacity(
                opacity: animation.value.clamp(0.0, 1.0),
                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: KinDatePicker(
                initialDate: initialDate,
                firstDate: firstDate,
                lastDate: lastDate,
                title: title,
                confirmLabel: confirmLabel,
                cancelLabel: cancelLabel,
                onConfirm: (date) => Navigator.pop(ctx, date),
                onCancel: () => Navigator.pop(ctx),
              ),
            ),
          ),
        ),
      );
    },
  );
}