validDate static method

String? validDate(
  1. String value
)

Implementation

static String? validDate(String value) {
  if (value.isEmpty) {
    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;
}