random method

DateTime random()

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);
}