| 1 | extension DurationFormatter on Duration { |
| 2 | String toHumanReadable() { |
| 3 | if (inSeconds == 0) { |
| 4 | return 'now'; |
| 5 | } |
| 6 | |
| 7 | if (inSeconds < 60) { |
| 8 | return '${inSeconds} |
| 9 | } |
| 10 | |
| 11 | if (inMinutes < 60) { |
| 12 | final minutes = inMinutes; |
| 13 | final seconds = inSeconds % 60 |
| 14 | if (seconds == 0) { |
| 15 | return '${minutes} |
| 16 | } |
| 17 | return '${minutes} |
| 18 | } |
| 19 | |
| 20 | if (inHours < 24) { |
| 21 | final hours = inHours; |
| 22 | final minutes = inMinutes % 60 |
| 23 | if (minutes == 0) { |
| 24 | return '${hours} |
| 25 | } |
| 26 | return '${hours} |
| 27 | } |
| 28 | |
| 29 | final days = inDays; |
| 30 | final hours = inHours % 24 |
| 31 | if (hours == 0) { |
| 32 | return '${days} |
| 33 | } |
| 34 | return '${days} |
| 35 | } |
| 36 | |
| 37 | String toRelativeTime() { |
| 38 | final now = DateTime. |
| 39 | final difference = this; |
| 40 | |
| 41 | if (difference.inSeconds.abs() |
| 42 | return 'just now'; |
| 43 | } |
| 44 | |
| 45 | if (difference.inMinutes.abs() |
| 46 | final minutes = difference.inMinutes. |
| 47 | return difference.isNegative ? ' |
| 48 | } |
| 49 | |
| 50 | if (difference.inHours.abs() |
| 51 | final hours = difference.inHours. |
| 52 | final minutes = (difference.inMinutes. |
| 53 | final timeString = minutes > 0 |
| 54 | return difference.isNegative ? ' |
| 55 | } |
| 56 | |
| 57 | final days = difference.inDays. |
| 58 | final hours = (difference.inHours. |
| 59 | final timeString = hours > 0 |
| 60 | return difference.isNegative ? ' |
| 61 | } |
| 62 | } |