avg method

DateTime? avg(
  1. Iterable<DateTime?>? dates
)

Calculates and returns the average DateTime from an iterable.

Ignores null values. The average is computed based on the millisecondsSinceEpoch of all valid dates. Returns null if the iterable is null or contains no valid dates.

Implementation

DateTime? avg(Iterable<DateTime?>? dates) {
  if (dates == null) return null;
  final filteredDates = dates.whereType<DateTime>();
  if (filteredDates.isEmpty) return null;
  final totalMs = filteredDates.fold<int>(
    0,
    (sum, date) => sum + date.millisecondsSinceEpoch,
  );
  final avgMs = totalMs ~/ filteredDates.length;
  return DateTime.fromMillisecondsSinceEpoch(avgMs);
}