selectDate function

Future<String> selectDate({
  1. required BuildContext context,
  2. DateTime? initialDate,
  3. DateTime? firstDate,
  4. DateTime? lastDate,
  5. TimeOfDay? initialTime,
  6. bool withTimePick = false,
  7. bool selectableDayPredicate(
    1. DateTime
    )?,
})

Implementation

Future<String> selectDate({
  required BuildContext context,
  DateTime? initialDate,
  DateTime? firstDate,
  DateTime? lastDate,
  TimeOfDay? initialTime,
  bool withTimePick = false,
  bool Function(DateTime)? selectableDayPredicate,
}) async {
  DateTime newDateTime = DateTime.now();
  TimeOfDay? pickedTime;

  final DateTime? pickedDate = await showDatePicker(
    context: context,
    initialDate: initialDate,
    firstDate: firstDate ?? DateTime.now(),
    lastDate: lastDate ?? DateTime.now().add(365.days),
    selectableDayPredicate: (DateTime day) {
      if (selectableDayPredicate != null) return selectableDayPredicate(day);
      return true;
    },
  );

  if (pickedDate != null) {
    newDateTime = pickedDate;

    if (withTimePick) {
      pickedTime = await showTimePicker(
        context: Get.context,
        initialTime: initialTime ?? TimeOfDay.now(),
      );

      if (pickedTime != null) {
        newDateTime = DateTime(
          pickedDate.year,
          pickedDate.month,
          pickedDate.day,
          pickedTime.hour,
          pickedTime.minute,
        );

        YurLog(name: "Picked Date", newDateTime.toString());
      }

      return newDateTime.toString();
    }

    return newDateTime.toString();
  } else {
    YurLog(name: "Picked Date else", initialDate.toString());

    return '';
  }
}