diff --git a/lib/src/message_widget.dart b/lib/src/message_widget.dart index 43def300..806a666a 100644 --- a/lib/src/message_widget.dart +++ b/lib/src/message_widget.dart @@ -155,13 +155,9 @@ class _MessageWidgetState extends State ), child: Row( children: [ - GestureDetector( - onTap: () { - if (widget.onUserAvatarTap != null) { - widget.onUserAvatarTap(widget.message.user); - } - }, - child: UserAvatar(user: widget.message.user), + UserAvatar( + user: widget.message.user, + onUserAvatarTap: widget.onUserAvatarTap, ), if (_isMyMessage && widget.nextMessage == null && diff --git a/lib/src/user_avatar.dart b/lib/src/user_avatar.dart index 2377411e..94a5533d 100644 --- a/lib/src/user_avatar.dart +++ b/lib/src/user_avatar.dart @@ -9,41 +9,55 @@ class UserAvatar extends StatelessWidget { Key key, @required this.user, this.constraints, + this.onUserAvatarTap, }) : super(key: key); final User user; final BoxConstraints constraints; + final void Function(User) onUserAvatarTap; @override Widget build(BuildContext context) { - return ClipRRect( - borderRadius: - StreamChatTheme.of(context).ownMessageTheme.avatarTheme.borderRadius, - child: Container( - constraints: constraints ?? - StreamChatTheme.of(context).ownMessageTheme.avatarTheme.constraints, - decoration: BoxDecoration( - color: StreamChatTheme.of(context).accentColor, - ), - child: user.extraData?.containsKey('image') ?? false - ? CachedNetworkImage( - imageUrl: user.extraData['image'], - errorWidget: (_, __, ___) { - return Center( - child: Text( - user.extraData?.containsKey('name') ?? false - ? user.extraData['name'][0] - : '', - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, + return GestureDetector( + onTap: () { + if (onUserAvatarTap != null) { + onUserAvatarTap(user); + } + }, + child: ClipRRect( + borderRadius: StreamChatTheme.of(context) + .ownMessageTheme + .avatarTheme + .borderRadius, + child: Container( + constraints: constraints ?? + StreamChatTheme.of(context) + .ownMessageTheme + .avatarTheme + .constraints, + decoration: BoxDecoration( + color: StreamChatTheme.of(context).accentColor, + ), + child: user.extraData?.containsKey('image') ?? false + ? CachedNetworkImage( + imageUrl: user.extraData['image'], + errorWidget: (_, __, ___) { + return Center( + child: Text( + user.extraData?.containsKey('name') ?? false + ? user.extraData['name'][0] + : '', + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + ), ), - ), - ); - }, - fit: BoxFit.cover, - ) - : StreamChatTheme.of(context).defaultUserImage(context, user), + ); + }, + fit: BoxFit.cover, + ) + : StreamChatTheme.of(context).defaultUserImage(context, user), + ), ), ); }