diff --git a/lib/helpers/extensions/show_context_menu.dart b/lib/helpers/extensions/show_context_menu.dart index aa337f3..f4762c3 100644 --- a/lib/helpers/extensions/show_context_menu.dart +++ b/lib/helpers/extensions/show_context_menu.dart @@ -3,7 +3,7 @@ import "package:flutter/material.dart"; extension ShowContextMenu on BuildContext { void showContextMenu({ required Offset globalPosition, - required VoidCallback onTap, + required List children, }) { final overlay = Overlay.of(this).context.findRenderObject() as RenderBox; @@ -16,20 +16,7 @@ extension ShowContextMenu on BuildContext { overlay.size.height - globalPosition.dy, ), color: Theme.of(this).colorScheme.surfaceContainerHighest, - items: [ - PopupMenuItem( - onTap: onTap, - child: ListTile(leading: Icon(Icons.reply), title: Text("Reply")), - ), - PopupMenuItem( - onTap: onTap, - child: ListTile(leading: Icon(Icons.edit), title: Text("Edit")), - ), - PopupMenuItem( - onTap: onTap, - child: ListTile(leading: Icon(Icons.delete), title: Text("Delete")), - ), - ], + items: children, ); } } diff --git a/lib/widgets/chat_page/room_chat.dart b/lib/widgets/chat_page/room_chat.dart index 4647d62..a1ac38e 100644 --- a/lib/widgets/chat_page/room_chat.dart +++ b/lib/widgets/chat_page/room_chat.dart @@ -39,6 +39,22 @@ class RoomChat extends HookConsumerWidget { final replyToMessage = useState(null); final memberListOpened = useState(showMembersByDefault); final theme = Theme.of(context); + + List getMessageOptions(Message message) => [ + PopupMenuItem( + onTap: () => replyToMessage.value = message, + child: ListTile(leading: Icon(Icons.reply), title: Text("Reply")), + ), + PopupMenuItem( + onTap: () {}, + child: ListTile(leading: Icon(Icons.edit), title: Text("Edit")), + ), + PopupMenuItem( + onTap: () {}, + child: ListTile(leading: Icon(Icons.delete), title: Text("Delete")), + ), + ]; + return ref .watch(CurrentRoomController.provider) .betterWhen( @@ -87,7 +103,7 @@ class RoomChat extends HookConsumerWidget { required index, }) => context.showContextMenu( globalPosition: details.globalPosition, - onTap: () => replyToMessage.value = message, + children: getMessageOptions(message), ), onMessageLongPress: ( @@ -97,7 +113,7 @@ class RoomChat extends HookConsumerWidget { required index, }) => context.showContextMenu( globalPosition: details.globalPosition, - onTap: () => replyToMessage.value = message, + children: getMessageOptions(message), ), builders: Builders( loadMoreBuilder: (_) => Loading(),