random method
generate random date for given options
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);
}