diff --git a/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart b/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart index 937cf681..e2392b50 100644 --- a/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart @@ -7,22 +7,11 @@ import 'package:stream_chat_flutter/src/stream_chat.dart'; import 'package:stream_chat_flutter/src/user_avatar.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; -import 'extension.dart'; -import 'message_widget.dart'; -import 'stream_chat_theme.dart'; - +/// Modal widget for displaying message reactions class MessageReactionsModal extends StatelessWidget { - final Message message; - final MessageTheme messageTheme; - final bool reverse; - final bool showReactions; - final DisplayWidget showUserAvatar; - final ShapeBorder? messageShape; - final ShapeBorder? attachmentShape; - final void Function(User)? onUserAvatarTap; - final BorderRadius? attachmentBorderRadiusGeometry; - + /// Constructor for creating a [MessageReactionsModal] reactions const MessageReactionsModal({ Key? key, required this.message, @@ -36,6 +25,33 @@ class MessageReactionsModal extends StatelessWidget { this.attachmentBorderRadiusGeometry, }) : super(key: key); + /// Message to display reactions of + final Message message; + + /// [MessageTheme] to apply to [message] + final MessageTheme messageTheme; + + /// Flag to reverse message + final bool reverse; + + /// Flag to show reactions on message + final bool showReactions; + + /// Enum to change user avatar config + final DisplayWidget showUserAvatar; + + /// [ShapeBorder] to apply to message + final ShapeBorder? messageShape; + + /// [ShapeBorder] to apply to attachment + final ShapeBorder? attachmentShape; + + /// Callback when user avatar is tapped + final void Function(User)? onUserAvatarTap; + + /// [BorderRadius] to apply to attachments + final BorderRadius? attachmentBorderRadiusGeometry; + @override Widget build(BuildContext context) { final size = MediaQuery.of(context).size; @@ -60,7 +76,7 @@ class MessageReactionsModal extends StatelessWidget { return TweenAnimationBuilder( tween: Tween(begin: 0, end: 1), - duration: Duration(milliseconds: 300), + duration: const Duration(milliseconds: 300), curve: Curves.easeInOutBack, builder: (context, val, snapshot) { final hasFileAttachment = @@ -110,7 +126,7 @@ class MessageReactionsModal extends StatelessWidget { const SizedBox(height: 8), IgnorePointer( child: MessageWidget( - key: Key('MessageWidget'), + key: const Key('MessageWidget'), reverse: reverse, message: message.copyWith( text: message.text!.length > 200 @@ -205,7 +221,7 @@ class MessageReactionsModal extends StatelessWidget { ) { final isCurrentUser = reaction.user?.id == currentUser.id; return ConstrainedBox( - constraints: BoxConstraints.loose(Size( + constraints: BoxConstraints.loose(const Size( 64, 98, )), @@ -218,11 +234,11 @@ class MessageReactionsModal extends StatelessWidget { UserAvatar( onTap: onUserAvatarTap, user: reaction.user!, - constraints: BoxConstraints.tightFor( + constraints: const BoxConstraints.tightFor( height: 64, width: 64, ), - onlineIndicatorConstraints: BoxConstraints.tightFor( + onlineIndicatorConstraints: const BoxConstraints.tightFor( height: 12, width: 12, ),