formatHumanCountdown function

String formatHumanCountdown(
  1. Duration duration, {
  2. String localeCode = 'en',
})

A duration in human units, magnitude-grained: seconds under a minute, minutes under an hour, hours under a day, days beyond («через 45 сек» / «через 3 часа» / «через 26 дней»; in 45 sec / in 3 hours).

Implementation

String formatHumanCountdown(Duration duration, {String localeCode = 'en'}) {
  final ru = localeCode.toLowerCase().startsWith('ru');
  final total = duration.inSeconds;
  final int value;
  final String unit;
  if (total < 60) {
    value = total;
    unit = ru ? 'сек' : 'sec';
  } else if (total < 3600) {
    value = duration.inMinutes;
    unit = ru ? 'мин' : 'min';
  } else if (total < 86400) {
    value = duration.inHours;
    unit = ru
        ? _ruPlural(value, 'час', 'часа', 'часов')
        : (value == 1 ? 'hour' : 'hours');
  } else {
    value = duration.inDays;
    unit = ru
        ? _ruPlural(value, 'день', 'дня', 'дней')
        : (value == 1 ? 'day' : 'days');
  }
  return ru ? 'через $value $unit' : 'in $value $unit';
}