String pluralize(int count, String noun, [String? plural]) { if (count == 1) { return noun; } else { return plural ?? '${noun}s'; } } String number(int number) { const numbers = [ 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten' ]; if (number < numbers.length) { return numbers[number]; } else { return number.toString(); } } String daysAgo(DateTime dateTime) { final now = DateTime.now(); final duration = now.difference(dateTime); ago(int count, String noun, [String? plural]) { return "${number(count)} ${pluralize(count, noun, plural)} ago"; } agoRound(double count, String noun, [String? plural]) { return ago(count.round(), noun, plural); } if (duration.inSeconds < 60) { return "now"; } else if (duration.inMinutes < 60) { return ago(duration.inMinutes, "minute"); } else if (duration.inHours < 24) { return ago(duration.inHours, "hour"); } else if (duration.inDays < 7) { return ago(duration.inDays, "day"); } else if (duration.inDays < 30) { return agoRound(duration.inDays / 7, "week"); } else if (duration.inDays < 365) { return agoRound(duration.inDays / 30, "month"); } else { return agoRound(duration.inDays / 365, "years"); } }