random method
Implementation
DateTime random() {
_randomDateOptions ??= RandomDateOptions();
_endYear ??= DateTime.now().year + _randomDateOptions!.addYearsToCurrent;
if (_endYear! < _startYear) {
throw ArgumentError('Start year cannot be less then End year');
}
// when start and end year are equal, add one to end year if not leapYear
if (_startYear == _endYear) {
if (_randomDateOptions!.excludeLeapYear && _isLeapYear(_startYear)) {
throw ArgumentError(
'Start and End year cannot be same when leap years are excluded');
} else {
var endYear = _endYear;
if (endYear != null) {
endYear++;
}
_endYear = endYear;
}
}
var _random = Random();
// generate year
var _randYear = _generateRandomYear();
// generate random month
var _randMonthInt = _random.nextInt(12) + 1;
// generate random day
var _randDay = _random.nextInt(_maxDays(_randYear, _randMonthInt));
// this is a valid day, month and year.
return DateTime(_randYear, _randMonthInt, _randDay);
}