duration static method
Formats seconds as a human-readable duration.
Short form: '1h 2m 5s'. Long form: '1:02:05'.
Implementation
static String duration(num seconds, {bool short = true}) {
final total = seconds.abs().floor();
final negative = seconds < 0;
final days = total ~/ 86400;
final hours = (total % 86400) ~/ 3600;
final minutes = (total % 3600) ~/ 60;
final secs = total % 60;
final sign = negative ? '-' : '';
if (short) {
final parts = <String>[];
if (days > 0) parts.add('${days}d');
if (hours > 0) parts.add('${hours}h');
if (minutes > 0) parts.add('${minutes}m');
if (secs > 0 || parts.isEmpty) parts.add('${secs}s');
return '$sign${parts.join(' ')}';
}
final h = hours + days * 24;
final mm = minutes.toString().padLeft(2, '0');
final ss = secs.toString().padLeft(2, '0');
return h > 0 ? '$sign$h:$mm:$ss' : '$sign$minutes:$ss';
}