cupertinoTimePicker static method

void cupertinoTimePicker({
  1. required dynamic callback(
    1. DateTime
    ),
  2. String title = 'Select Time',
  3. String btnOKText = 'Select',
  4. String btnCancelText = 'Cancel',
  5. DateTime? initialDate,
  6. DateTime? minDate,
  7. DateTime? maxDate,
  8. CupertinoDatePickerMode mode = CupertinoDatePickerMode.date,
})

Implementation

static void cupertinoTimePicker({
  required Function(DateTime) callback,
  String title = 'Select Time',
  String btnOKText = 'Select',
  String btnCancelText = 'Cancel',
  DateTime? initialDate,
  DateTime? minDate,
  DateTime? maxDate,
  CupertinoDatePickerMode mode = CupertinoDatePickerMode.date,
}) {
  var output = DateTime.now();
  showCupertinoModalPopup(
    context: Get.context!,
    builder: (_) => CupertinoApp(
      debugShowCheckedModeBanner: false,
      builder: (context, child) => Container(
        height: Get.size.height * 0.40,
        decoration: ExDecorator.top(),
        child: Column(
          children: [
            ExDashLine().pOnly(top: 12),
            HStack([
              title.text
                  .size(14)
                  .color(Get.theme.textTheme.displayMedium?.color)
                  .fontWeight(FontWeight.w500)
                  .make()
                  .expand(),
            ]).pOnly(left: 20, top: 12, bottom: 12),
            Divider(),
            CupertinoTheme(
              data: CupertinoThemeData(
                brightness:
                    Get.isDarkMode ? Brightness.dark : Brightness.light,
                textTheme: CupertinoTextThemeData(
                  dateTimePickerTextStyle: TextStyle(
                    color: Get.theme.textTheme.bodyLarge?.color,
                    fontSize: 14,
                    fontWeight: FontWeight.w400,
                    decoration: TextDecoration.none,
                  ),
                ),
              ),
              child: CupertinoDatePicker(
                mode: CupertinoDatePickerMode.time,
                initialDateTime: initialDate ?? DateTime.now(),
                minimumDate: minDate ?? DateTime.now().subtract(1.seconds),
                // somehow must like this =,=
                maximumDate: maxDate?.add(1.minutes) ?? DateTime(2050),
                onDateTimeChanged: (val) => output = val,
                dateOrder: DatePickerDateOrder.dmy,
              ),
            ).expand(),
            HStack(
              [
                ExButtonElevated(
                  width: double.infinity,
                  radius: 0,
                  backgroundColor: Get.theme.canvasColor,
                  label: btnCancelText,
                  labelColor: Vx.red500,
                  onPressed: Get.back,
                ).expand(),
                1.widthBox,
                ExButtonElevated(
                  width: double.infinity,
                  radius: 0,
                  backgroundColor: Get.theme.canvasColor,
                  label: btnOKText,
                  labelColor: Get.theme.textTheme.displayLarge?.color,
                  onPressed: () {
                    callback.call(output);
                    Navigator.of(Get.context!).pop();
                  },
                ).expand(),
              ],
            ),
          ],
        ),
      ),
    ),
  );
}