toTimeAgo method
ISO date → "3 hours ago" / "۳ ساعت پیش"; older than 8 days shows the date. createdAt.toTimeAgo(persian: true)
Implementation
String toTimeAgo({bool numericDates = false, bool persian = false}) {
final DateTime? date = DateTime.tryParse(this);
if (date == null) return this;
final Duration difference = DateTime.now().difference(date);
if (difference.inDays > 8) return length >= 10 ? substring(0, 10) : this;
if (difference.inDays >= 7) return persian ? (numericDates ? "۱ هفته پیش" : "هفته پیش") : (numericDates ? "1 week ago" : "Last week");
if (difference.inDays >= 2) return persian ? "${difference.inDays.toString().toPersianNumber()} روز پیش" : "${difference.inDays} days ago";
if (difference.inDays >= 1) return persian ? (numericDates ? "۱ روز پیش" : "دیروز") : (numericDates ? "1 day ago" : "Yesterday");
if (difference.inHours >= 2) return persian ? "${difference.inHours.toString().toPersianNumber()} ساعت پیش" : "${difference.inHours} hours ago";
if (difference.inHours >= 1) return persian ? (numericDates ? "۱ ساعت پیش" : "یک ساعت پیش") : (numericDates ? "1 hour ago" : "An hour ago");
if (difference.inMinutes >= 2) return persian ? "${difference.inMinutes.toString().toPersianNumber()} دقیقه پیش" : "${difference.inMinutes} minutes ago";
if (difference.inMinutes >= 1) return persian ? (numericDates ? "۱ دقیقه پیش" : "یک دقیقه پیش") : (numericDates ? "1 minute ago" : "A minute ago");
if (difference.inSeconds >= 3) return persian ? "${difference.inSeconds.toString().toPersianNumber()} ثانیه پیش" : "${difference.inSeconds} seconds ago";
return persian ? "همین الان" : "Just now";
}