fluffychat/lib/pangea/widgets/chat/message_context_menu.dart
ggurdin 9ecf4e3bd2
fix: fix dart formatting for CI (#1368)
* fix: fix dart formatting for CI

* fix: sorted imports, updated deprecated flutter functions

* fix: format files

* fix: format files

* feat: replace syncfusion flutter package with excel flutter package

* fix: don't run enable google services patch in CI

* fix: update iOS supported platforms for enable ios build script

* fix: commented out linux build in integrate CI
2025-01-07 08:32:42 -05:00

73 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
class MessageContextMenu {
static List<ContextMenuButtonItem> customToolbarOptions(
BuildContext context,
void Function()? onDefine,
void Function()? onListen,
) {
return [
ContextMenuButtonItem(
label: L10n.of(context).define,
onPressed: onDefine,
),
ContextMenuButtonItem(
label: L10n.of(context).listen,
onPressed: onListen,
),
];
}
static List<ContextMenuButtonItem> toolbarOptions(
EditableTextState? textSelection,
SelectableRegionState? contentSelection,
BuildContext context,
void Function()? onDefine,
void Function()? onListen,
) {
final List<ContextMenuButtonItem> menuItems =
textSelection?.contextMenuButtonItems ??
contentSelection?.contextMenuButtonItems ??
[];
menuItems.sort((a, b) {
if (a.type == ContextMenuButtonType.copy) return -1;
if (b.type == ContextMenuButtonType.copy) return 1;
return 0;
});
return MessageContextMenu.customToolbarOptions(
context,
onDefine,
onListen,
) +
menuItems;
}
static Widget contextMenuOverride({
required BuildContext context,
EditableTextState? textSelection,
SelectableRegionState? contentSelection,
void Function()? onDefine,
void Function()? onListen,
}) {
if (textSelection == null && contentSelection == null) {
return const SizedBox();
}
final List<ContextMenuButtonItem> menuItems =
MessageContextMenu.toolbarOptions(
textSelection,
contentSelection,
context,
onDefine,
onListen,
);
return AdaptiveTextSelectionToolbar.buttonItems(
anchors: textSelection?.contextMenuAnchors ??
contentSelection!.contextMenuAnchors,
buttonItems: menuItems,
);
}
}