validateDate static method
Implementation
static String? validateDate(String value) {
if (value.isEmpty) {
return UIStrings.fieldReq;
}
int year;
int month;
// The value contains a forward slash if the month and year has been
// entered.
if (value.contains(RegExp(r'(\/)'))) {
var split = value.split(RegExp(r'(\/)'));
// The value before the slash is the month while the value to right of
// it is the year.
month = int.parse(split[0]);
year = int.parse(split[1]);
} else {
// Only the month was entered
month = int.parse(value.substring(0, (value.length)));
year = -1; // Lets use an invalid year intentionally
}
if ((month < 1) || (month > 12)) {
// A valid month is between 1 (January) and 12 (December)
return 'Expiry month is invalid';
}
var fourDigitsYear = convertYearTo4Digits(year);
if ((fourDigitsYear < 1) || (fourDigitsYear > 2099)) {
// We are assuming a valid should be between 1 and 2099.
// Note that, it's valid doesn't mean that it has not expired.
return 'Expiry year is invalid';
}
if (!hasDateExpired(month, year)) {
return "Card has expired";
}
return null;
}