toRelativeString method

String toRelativeString()

Formats this duration as relative text.

Implementation

String toRelativeString() {
  final absolute = Duration(microseconds: inMicroseconds.abs());

  if (absolute.inSeconds < 10) return 'just now';

  final String body;
  if (absolute.inDays >= 365) {
    final years = (absolute.inDays / 365).round();
    body = '$years ${years == 1 ? 'year' : 'years'}';
  } else if (absolute.inDays >= 30) {
    final months = (absolute.inDays / 30).round();
    body = '$months ${months == 1 ? 'month' : 'months'}';
  } else if (absolute.inDays >= 1) {
    body = '${absolute.inDays} ${absolute.inDays == 1 ? 'day' : 'days'}';
  } else if (absolute.inHours >= 1) {
    body = '${absolute.inHours} ${absolute.inHours == 1 ? 'hour' : 'hours'}';
  } else if (absolute.inMinutes >= 1) {
    body =
        '${absolute.inMinutes} ${absolute.inMinutes == 1 ? 'minute' : 'minutes'}';
  } else {
    body = '${absolute.inSeconds} seconds';
  }

  return isNegative ? '$body ago' : 'in $body';
}