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