show static method

Future<TimeOfDay?> show({
  1. required BuildContext context,
  2. TimeOfDay? initialTime,
  3. bool use24HourFormat = false,
  4. String title = 'Select Time',
  5. String confirmLabel = 'Confirm',
  6. String cancelLabel = 'Cancel',
})

Implementation

static Future<TimeOfDay?> show({
  required BuildContext context,
  TimeOfDay? initialTime,
  bool use24HourFormat = false,
  String title = 'Select Time',
  String confirmLabel = 'Confirm',
  String cancelLabel = 'Cancel',
}) {
  final time = initialTime ?? TimeOfDay.now();
  return showGeneralDialog<TimeOfDay>(
    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: KinTimePicker(
                initialTime: time,
                use24HourFormat: use24HourFormat,
                title: title,
                confirmLabel: confirmLabel,
                cancelLabel: cancelLabel,
                onConfirm: (t) => Navigator.pop(ctx, t),
                onCancel: () => Navigator.pop(ctx),
              ),
            ),
          ),
        ),
      );
    },
  );
}