toNaturalString method
Natural-language description using the two largest non-zero units.
Unlike HumanizedDuration.toWordString, uses a space separator and limits output to two units.
const Duration(hours: 2, minutes: 3).toNaturalString(); // '2 hours 3 minutes'
const Duration(minutes: 1, seconds: 5).toNaturalString(); // '1 minute 5 seconds'
Duration.zero.toNaturalString(); // '0 seconds'
Implementation
String toNaturalString() {
final d = Duration(microseconds: inMicroseconds.abs());
final h = d.inHours;
final m = d.inMinutes % 60;
final s = d.inSeconds % 60;
String unit(int n, String singular) => '$n ${n == 1 ? singular : '${singular}s'}';
final parts = <String>[
if (h > 0) unit(h, 'hour'),
if (m > 0) unit(m, 'minute'),
if (s > 0 || (h == 0 && m == 0)) unit(s, 'second'),
];
return parts.take(2).join(' ');
}