selectStartAndEndDate function

Future<String?> selectStartAndEndDate(
  1. BuildContext context,
  2. {bool dayLimitMore = false}
)

Implementation

Future<String?> selectStartAndEndDate(BuildContext context,
    {bool dayLimitMore = false}) async {
  DateTime? startDate;
  DateTime? endDate;
  String? dateToString;
  await showDatePicker(
    context: context,
    initialDate: startDate ?? DateTime.now(),
    firstDate: DateTime.now(),
    lastDate: !dayLimitMore
        ? DateTime.now().add(Duration(days: 365))
        : DateTime(DateTime.now().year + 3000),
    locale: Locale(appStore.selectedLanguageCode),
    cancelText: "Cancel",
    confirmText: "Ok",
    helpText: 'Select Start Date',
    builder: (_, child) {
      return Theme(
        data: appStore.isDarkMode ? ThemeData.dark() : ThemeData.light(),
        child: child!,
      );
    },
  ).then((date) async {
    if (date != null) {
      startDate = date;
    } else {
      eventFilterStore.setStartDate("");
    }
    if (startDate != null) {
      await showDatePicker(
        context: context,
        initialDate: endDate ?? DateTime.now(),
        firstDate: DateTime.now(),
        lastDate: !dayLimitMore
            ? DateTime.now().add(Duration(days: 365))
            : DateTime(DateTime.now().year + 3000),
        locale: Locale(appStore.selectedLanguageCode),
        cancelText: "Cancel",
        confirmText: "Ok",
        helpText: 'Select End Date',
        builder: (_, child) {
          return Theme(
            data: appStore.isDarkMode ? ThemeData.dark() : ThemeData.light(),
            child: child!,
          );
        },
      ).then((date) async {
        if (date != null) {
          if (date.isBefore(startDate!)) {
            toast("End date is greater then start date");
          } else {
            endDate = date;
          }
        }
        ;
      });
    }
  }).catchError((e) {
    toast(e.toString());
  });
  if (endDate != null) {
    eventFilterStore
        .setEndDate(formatDate(endDate.toString(), format: DATE_FORMAT_7));
    eventFilterStore
        .setStartDate(formatDate(startDate.toString(), format: DATE_FORMAT_7));
    dateToString = formatDate(startDate.toString(), format: DATE_FORMAT_9) +
        " to " +
        formatDate(endDate.toString(), format: DATE_FORMAT_9);
  } else {
    eventFilterStore.setEndDate("");
    eventFilterStore.setStartDate("");
  }
  return dateToString;
}