validDate static method

String? validDate(
  1. String? value
)

Implementation

static String? validDate(String? value) {
  if (isNullOrBlank(value)) return 'Informe uma data.';

  List<String> parts = value!.split('/');

  if (parts.length != 3) return 'Data inválida.';

  if (parts[2].length != 4) return 'Ano inválido.';

  int? year = int.tryParse(parts[2]);

  if (year == null) return 'Ano inválido.';

  int? month = int.tryParse(parts[1]);

  if (month == null || month < 1 || month > 12) return 'Mês inválido.';

  int? day = int.tryParse(parts[0]);

  if (day == null || day < 1 || day > DateTime(year, month).daysInMonth) {
    return 'Dia inválido.';
  }

  return null;
}