💄 Optimized notification list
This commit is contained in:
		| @@ -5,6 +5,7 @@ import 'package:solian/models/notification.dart'; | ||||
| import 'package:solian/providers/notifications.dart'; | ||||
| import 'package:solian/widgets/loading_indicator.dart'; | ||||
| import 'package:solian/widgets/markdown_text_content.dart'; | ||||
| import 'package:solian/widgets/relative_date.dart'; | ||||
| import 'package:uuid/uuid.dart'; | ||||
|  | ||||
| class NotificationScreen extends StatefulWidget { | ||||
| @@ -107,12 +108,26 @@ class _NotificationScreenState extends State<NotificationScreen> { | ||||
|                                 crossAxisAlignment: CrossAxisAlignment.start, | ||||
|                                 children: [ | ||||
|                                   Icon(NotificationTopicIcons[element.topic]), | ||||
|                                   const Gap(12), | ||||
|                                   const Gap(16), | ||||
|                                   Expanded( | ||||
|                                     child: Column( | ||||
|                                       crossAxisAlignment: | ||||
|                                           CrossAxisAlignment.start, | ||||
|                                       children: [ | ||||
|                                         if (element.readAt == null) | ||||
|                                           Badge( | ||||
|                                             label: Row( | ||||
|                                               children: [ | ||||
|                                                 const Icon( | ||||
|                                                   Icons.new_releases_outlined, | ||||
|                                                   color: Colors.white, | ||||
|                                                   size: 12, | ||||
|                                                 ), | ||||
|                                                 const Gap(4), | ||||
|                                                 Text('unread'.tr), | ||||
|                                               ], | ||||
|                                             ), | ||||
|                                           ).paddingOnly(bottom: 4), | ||||
|                                         Text( | ||||
|                                           element.title, | ||||
|                                           style: Theme.of(context) | ||||
| @@ -126,7 +141,8 @@ class _NotificationScreenState extends State<NotificationScreen> { | ||||
|                                                 .textTheme | ||||
|                                                 .titleSmall, | ||||
|                                           ), | ||||
|                                         const Gap(4), | ||||
|                                         if (element.subtitle != null) | ||||
|                                           const Gap(4), | ||||
|                                         MarkdownTextContent( | ||||
|                                           content: element.body, | ||||
|                                           isAutoWarp: true, | ||||
| @@ -134,6 +150,29 @@ class _NotificationScreenState extends State<NotificationScreen> { | ||||
|                                           parentId: | ||||
|                                               'notification-${element.id}', | ||||
|                                         ), | ||||
|                                         const Gap(8), | ||||
|                                         Opacity( | ||||
|                                           opacity: 0.75, | ||||
|                                           child: Row( | ||||
|                                             children: [ | ||||
|                                               RelativeDate( | ||||
|                                                 element.createdAt, | ||||
|                                                 style: TextStyle(fontSize: 12), | ||||
|                                               ), | ||||
|                                               const Gap(4), | ||||
|                                               Text( | ||||
|                                                 '·', | ||||
|                                                 style: TextStyle(fontSize: 12), | ||||
|                                               ), | ||||
|                                               const Gap(4), | ||||
|                                               RelativeDate( | ||||
|                                                 element.createdAt, | ||||
|                                                 style: TextStyle(fontSize: 12), | ||||
|                                                 isFull: true, | ||||
|                                               ), | ||||
|                                             ], | ||||
|                                           ), | ||||
|                                         ), | ||||
|                                       ], | ||||
|                                     ), | ||||
|                                   ), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user