toDetailedString method

String toDetailedString()

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;
}