sync flutter widgets

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-02-12 11:01:35 +08:00
parent fbf7116edf
commit 483953cf56
31 changed files with 804 additions and 646 deletions

View File

@@ -156,19 +156,37 @@ class SystemContextMenu extends StatefulWidget {
static List<IOSSystemContextMenuItem> getDefaultItems(
EditableTextState editableTextState,
) {
return <IOSSystemContextMenuItem>[
if (editableTextState.copyEnabled) const IOSSystemContextMenuItemCopy(),
if (editableTextState.cutEnabled) const IOSSystemContextMenuItemCut(),
if (editableTextState.pasteEnabled) const IOSSystemContextMenuItemPaste(),
if (editableTextState.selectAllEnabled)
const IOSSystemContextMenuItemSelectAll(),
if (editableTextState.lookUpEnabled)
const IOSSystemContextMenuItemLookUp(),
if (editableTextState.searchWebEnabled)
const IOSSystemContextMenuItemSearchWeb(),
if (editableTextState.liveTextInputEnabled)
const IOSSystemContextMenuItemLiveText(),
];
final items = <IOSSystemContextMenuItem>[];
// Use the generic Flutter-rendered context menu model as the single source of truth.
for (final ContextMenuButtonItem button
in editableTextState.contextMenuButtonItems) {
switch (button.type) {
case ContextMenuButtonType.copy:
items.add(const IOSSystemContextMenuItemCopy());
case ContextMenuButtonType.cut:
items.add(const IOSSystemContextMenuItemCut());
case ContextMenuButtonType.paste:
items.add(const IOSSystemContextMenuItemPaste());
case ContextMenuButtonType.selectAll:
items.add(const IOSSystemContextMenuItemSelectAll());
case ContextMenuButtonType.lookUp:
items.add(const IOSSystemContextMenuItemLookUp());
case ContextMenuButtonType.searchWeb:
items.add(const IOSSystemContextMenuItemSearchWeb());
case ContextMenuButtonType.share:
items.add(const IOSSystemContextMenuItemShare());
case ContextMenuButtonType.liveTextInput:
items.add(const IOSSystemContextMenuItemLiveText());
case ContextMenuButtonType.delete:
// No native iOS system menu button for Delete — intentionally ignored.
case ContextMenuButtonType.custom:
// Custom items are provided explicitly via SystemContextMenu.items,
// not via defaults. Intentionally ignore in default mapping.
}
}
return items;
}
@override