formatHumanCountdown function
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';
}