toDetailedString method
Abbreviated breakdown including milliseconds.
Unlike HumanizedDuration.toVerboseString, always includes milliseconds when non-zero and always shows seconds.
const Duration(minutes: 1, milliseconds: 500).toDetailedString(); // '1m 0s 500ms'
const Duration(hours: 1, minutes: 2).toDetailedString(); // '1h 2m 0s'
Implementation
String toDetailedString() {
final d = Duration(microseconds: inMicroseconds.abs());
final h = d.inHours;
final m = d.inMinutes % 60;
final s = d.inSeconds % 60;
final ms = d.inMilliseconds % 1000;
final parts = <String>[if (h > 0) '${h}h', if (h > 0 || m > 0) '${m}m', '${s}s', if (ms > 0) '${ms}ms'];
final body = parts.join(' ');
return inMicroseconds < 0 ? '-$body' : body;
}