formatDuration function
Formats Duration as a short string (e.g. "2h 30m" or "1d 2h").
isIncludeSeconds and isIncludeMilliseconds add smaller units when non-zero.
Implementation
String formatDuration(
Duration d, {
bool isShort = true,
bool isIncludeSeconds = true,
bool isIncludeMilliseconds = false,
}) {
final List<String> parts = <String>[];
final int days = d.inDays;
final int hours = d.inHours % 24;
final int minutes = d.inMinutes % 60;
final int seconds = d.inSeconds % 60;
final int millis = d.inMilliseconds % 1000;
final String? dPart = _formatUnit(days, isShort, 'd', _kDay, _kDays);
if (dPart != null) parts.add(dPart);
final String? hPart = _formatUnit(hours, isShort, 'h', _kHour, _kHours);
if (hPart != null) parts.add(hPart);
final String? mPart = _formatUnit(minutes, isShort, 'm', _kMinute, _kMinutes);
if (mPart != null) parts.add(mPart);
final String? sPart = _secondsPart(d, seconds, parts, isIncludeSeconds, isShort);
if (sPart != null) parts.add(sPart);
final String? msPart = _millisPart(millis, isIncludeMilliseconds, isShort);
if (msPart != null) parts.add(msPart);
return parts.isEmpty ? (isShort ? _kZeroS : _kZeroSeconds) : parts.join(' ');
}