show method

Future show(
  1. BuildContext? buildContext,
  2. String? mode,
  3. String pick,
  4. String? oldest,
  5. String? newest,
  6. String? format,
)

Implementation

Future show(BuildContext? buildContext, String? mode, String pick,
    String? oldest, String? newest, String? format) async {
  TimePickerEntryMode tmode = TimePickerEntryMode.dial;
  DatePickerEntryMode dmode = DatePickerEntryMode.calendar;
  switch (mode) {
    case "gui":
      {
        tmode = TimePickerEntryMode.dial;
        dmode = DatePickerEntryMode.calendarOnly;
      }
      break;
    case "input":
      {
        tmode = TimePickerEntryMode.input;
        dmode = DatePickerEntryMode.inputOnly;
      }
      break;
    case "bothinput":
      {
        tmode = TimePickerEntryMode.input;
        dmode = DatePickerEntryMode.input;
      }
      break;
    case "bothgui":
      {
        tmode = TimePickerEntryMode.dial;
        dmode = DatePickerEntryMode.calendar;
      }
      break;
    default:
      {
        tmode = TimePickerEntryMode.dial;
        dmode = DatePickerEntryMode.calendar;
      }
      break;
  }

  DateTime? result = DateTime.now();
  DateTimeRange? range;
  TimeOfDay? timeResult = TimeOfDay.now();

  if (type == "range") {
    range = await showDateRangePicker(
      context: buildContext!,
      initialEntryMode: dmode,
      firstDate: S.toDate(oldest, format: format) ??
          DateTime(DateTime.now().year - 100),
      currentDate: DateTime.now(),
      lastDate: S.toDate(newest, format: format) ??
          DateTime(DateTime.now().year + 10),
    );
    if (range == null) return;
    return setValue(range.start, timeResult, format, secondResult: range.end);
  } else if (type != "time") {
    result = await (showDatePicker(
      context: buildContext!,
      initialDatePickerMode: type == "year" || type == "yeartime"
          ? DatePickerMode.year
          : DatePickerMode.day,
      // selectableDayPredicate: ,
      initialEntryMode: dmode,
      firstDate: S.toDate(oldest, format: format) ??
          DateTime(DateTime.now().year - 100),
      initialDate: S.toDate(value, format: format) ?? DateTime.now(),
      lastDate: S.toDate(newest, format: format) ?? DateTime(DateTime.now().year + 10)));


    if(type == 'datetime' || type == 'yeartime' || type == 'rangetime') {
     TimeOfDay time = TimeOfDay.now();
     timeResult = await showTimePicker(
         context: buildContext,
         initialTime: time,
         initialEntryMode: tmode);
   }

    setValue(result, timeResult, format);
    return;
  } else {
    TimeOfDay time = TimeOfDay.now();
    try {
      time = (TimeOfDay.fromDateTime(S.toDate(value, format: format)!));
    } catch(e) {
      Log().exception(e, caller: 'Datepicker');
      value = '';
    }
    timeResult = await showTimePicker(
      context: buildContext!,
      initialTime: time,
      initialEntryMode: tmode);
  }

  setValue(result, timeResult, format);
  return;
}