toHuman method

String toHuman({
  1. bool persian = false,
})

Largest two units in words. 3725 s → "1h 2m", persian → "۱ ساعت و ۲ دقیقه"

Implementation

String toHuman({bool persian = false}) {
  final List<(int, String, String)> parts = <(int, String, String)>[
    (inDays, "d", "روز"),
    (inHours % 24, "h", "ساعت"),
    (inMinutes % 60, "m", "دقیقه"),
    (inSeconds % 60, "s", "ثانیه"),
  ].where(((int, String, String) p) => p.$1 > 0).take(2).toList();
  if (parts.isEmpty) return persian ? "۰ ثانیه" : "0s";
  return persian ? parts.map(((int, String, String) p) => "${p.$1.toString().toPersianNumber()} ${p.$3}").join(" و ") : parts.map(((int, String, String) p) => "${p.$1}${p.$2}").join(" ");
}