From 0aee5e8285d3f2434c2d4bfcf6b35fa048e61667 Mon Sep 17 00:00:00 2001 From: Kiril Tijsma Date: Mon, 10 Mar 2025 08:38:53 +0100 Subject: [PATCH] feat(chat-message-bubble): add status marker --- .../lib/src/local/local_chat_repository.dart | 1 + .../widgets/default_message_builder.dart | 48 +++++++++++++++---- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/packages/chat_repository_interface/lib/src/local/local_chat_repository.dart b/packages/chat_repository_interface/lib/src/local/local_chat_repository.dart index fe9db50..6defe58 100644 --- a/packages/chat_repository_interface/lib/src/local/local_chat_repository.dart +++ b/packages/chat_repository_interface/lib/src/local/local_chat_repository.dart @@ -225,6 +225,7 @@ class LocalChatRepository implements ChatRepositoryInterface { messageType: messageType, senderId: senderId, imageUrl: imageUrl, + status: MessageStatus.sent, ); var chat = chats.firstWhereOrNull((e) => e.id == chatId); diff --git a/packages/flutter_chat/lib/src/screens/chat_detail/widgets/default_message_builder.dart b/packages/flutter_chat/lib/src/screens/chat_detail/widgets/default_message_builder.dart index aabd2d1..36c0f43 100644 --- a/packages/flutter_chat/lib/src/screens/chat_detail/widgets/default_message_builder.dart +++ b/packages/flutter_chat/lib/src/screens/chat_detail/widgets/default_message_builder.dart @@ -147,6 +147,30 @@ class DefaultChatMessageBuilder extends StatelessWidget { } } +class _ChatMessageStatus extends StatelessWidget { + const _ChatMessageStatus({ + required this.messageTheme, + required this.status, + }); + + final MessageTheme messageTheme; + final MessageStatus status; + + @override + Widget build(BuildContext context) => switch (status) { + MessageStatus.sending => Icon( + Icons.access_time, + size: 16.0, + color: messageTheme.textColor, + ), + MessageStatus.sent => Icon( + Icons.check, + size: 16.0, + color: messageTheme.textColor, + ), + }; +} + class _ChatMessageBubble extends StatelessWidget { const _ChatMessageBubble({ required this.isSameSender, @@ -200,12 +224,15 @@ class _ChatMessageBubble extends StatelessWidget { ), ); - var messageTimeRow = Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Padding( - padding: const EdgeInsets.only(right: 8, bottom: 4), - child: CustomSemantics( + var messageTimeRow = Padding( + padding: const EdgeInsets.only( + bottom: 8.0, + right: 8.0, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + CustomSemantics( identifier: semanticIdTime, value: messageTime, child: Text( @@ -216,8 +243,13 @@ class _ChatMessageBubble extends StatelessWidget { textAlign: TextAlign.end, ), ), - ), - ], + const SizedBox(width: 4.0), + _ChatMessageStatus( + messageTheme: messageTheme, + status: message.status, + ), + ], + ), ); var showName =