From 60c615f0d3e042d0bf79f957a7b73728a1cddc2e Mon Sep 17 00:00:00 2001 From: Nopylacetat Date: Sat, 21 Oct 2023 01:04:44 +0200 Subject: [PATCH] Zeiten --- lib/pages/feed_page.dart | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/lib/pages/feed_page.dart b/lib/pages/feed_page.dart index eca7e28..d863bc3 100644 --- a/lib/pages/feed_page.dart +++ b/lib/pages/feed_page.dart @@ -22,9 +22,19 @@ class _FeedPageState extends State { return Card( child: ListTile( title: Text(feedItem.text), - trailing: Text( - '${feedItem.timestamp.hour}:${feedItem.timestamp.minute}', - style: Theme.of(context).textTheme.bodyLarge!.copyWith(), + trailing: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text(getTimeString(feedItem.timestamp)), + const Padding( + padding: EdgeInsets.symmetric(horizontal: 15), + ), + Text( + '${feedItem.timestamp.hour}:${feedItem.timestamp.minute}', + style: Theme.of(context).textTheme.bodyLarge!.copyWith(), + ), + ], ), ), ); @@ -32,3 +42,23 @@ class _FeedPageState extends State { ); } } + +String getTimeString(DateTime time) { + DateTime now = DateTime.now(); + final duration = Duration( + hours: now.hour - time.hour, + days: now.day - time.day, + minutes: now.minute - time.minute, + ); + if (duration.inDays == 1) { + return 'Yesterday'; + } else if (duration.inDays > 1) { + return '${duration.inDays} days ago'; + } else if (duration.inHours > 0) { + return '${duration.inHours} hours ago'; + } else if (duration.inMinutes > 0) { + return '${duration.inMinutes} minutes ago'; + } else { + return 'just seconds ago'; + } +}