diff --git a/packages/stream_chat_flutter/lib/src/extension.dart b/packages/stream_chat_flutter/lib/src/extension.dart index a65272c3..3b6ba3e2 100644 --- a/packages/stream_chat_flutter/lib/src/extension.dart +++ b/packages/stream_chat_flutter/lib/src/extension.dart @@ -104,3 +104,15 @@ extension BuildContextX on BuildContext { double get textScaleFactor => MediaQuery.maybeOf(this)?.textScaleFactor ?? 1.0; } + +/// Extension on [BorderRadius] +extension FlipBorder on BorderRadius { + /// Flips borders (Y) + BorderRadius mirrorBorderIfReversed({bool reverse = true}) => reverse + ? BorderRadius.only( + topLeft: topRight, + topRight: topLeft, + bottomLeft: bottomRight, + bottomRight: bottomLeft) + : this; +} diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index f0ce9539..c0a4acaf 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -189,8 +189,10 @@ class _MessageActionsModalState extends State { child: MessageWidget( key: const Key('MessageWidget'), reverse: widget.reverse, - attachmentBorderRadiusGeometry: - widget.attachmentBorderRadiusGeometry, + attachmentBorderRadiusGeometry: widget + .attachmentBorderRadiusGeometry + ?.mirrorBorderIfReversed( + reverse: widget.reverse), message: widget.message.copyWith( text: widget.message.text!.length > 200 // ignore: lines_longer_than_80_chars 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 8d5b408e..35cd45e3 100644 --- a/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart @@ -144,7 +144,9 @@ class MessageReactionsModal extends StatelessWidget { attachmentShape: attachmentShape, padding: const EdgeInsets.all(0), attachmentBorderRadiusGeometry: - attachmentBorderRadiusGeometry, + attachmentBorderRadiusGeometry + ?.mirrorBorderIfReversed( + reverse: reverse), attachmentPadding: EdgeInsets.all( hasFileAttachment ? 4 : 2, ), diff --git a/packages/stream_chat_flutter/lib/src/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget.dart index 42ce4947..dfacd111 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget.dart @@ -16,6 +16,7 @@ import 'package:stream_chat_flutter/src/quoted_message_widget.dart'; import 'package:stream_chat_flutter/src/reaction_bubble.dart'; import 'package:stream_chat_flutter/src/url_attachment.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +import 'extension.dart'; /// Widget builder for building attachments typedef AttachmentBuilder = Widget Function( diff --git a/packages/stream_chat_flutter/lib/src/utils.dart b/packages/stream_chat_flutter/lib/src/utils.dart index d24ccc7e..d8bbcde6 100644 --- a/packages/stream_chat_flutter/lib/src/utils.dart +++ b/packages/stream_chat_flutter/lib/src/utils.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; import 'package:url_launcher/url_launcher.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; /// Launch URL Future launchURL(BuildContext context, String? url) async { @@ -333,7 +334,7 @@ Widget wrapAttachmentWidget( BorderRadius borderRadius, ) => ClipRRect( - borderRadius: borderRadius, + borderRadius: borderRadius.mirrorBorderIfReversed(reverse: reverse), child: Material( clipBehavior: Clip.antiAlias, shape: attachmentShape,