toCountdown method
Returns a human-readable countdown string, e.g. "2d 3h 45m 10s".
Omits zero-value units except seconds.
const Duration(days: 2, hours: 3).toCountdown() // '2d 3h 0m 0s'
Implementation
String toCountdown() {
final abs = this.abs();
final d = abs.inDays;
final h = abs.inHours.remainder(24);
final m = abs.inMinutes.remainder(60);
final s = abs.inSeconds.remainder(60);
final parts = <String>[];
if (d > 0) parts.add('${d}d');
if (d > 0 || h > 0) parts.add('${h}h');
parts.add('${m}m');
parts.add('${s}s');
return '${isNegative ? '-' : ''}${parts.join(' ')}';
}