getDefaultItems static method

List<IOSSystemContextMenuItem> getDefaultItems(
  1. EditableTextState editableTextState
)

The default items for the given EditableTextState.

For example, IOSSystemContextMenuItemCopy will only be included when the field represented by the EditableTextState has a selection.

See also:

Implementation

static List<IOSSystemContextMenuItem> getDefaultItems(EditableTextState editableTextState) {
  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.kind) {
      case ContextMenuButtonKind.copy:
        items.add(const IOSSystemContextMenuItemCopy());
      case ContextMenuButtonKind.cut:
        items.add(const IOSSystemContextMenuItemCut());
      case ContextMenuButtonKind.paste:
        items.add(const IOSSystemContextMenuItemPaste());
      case ContextMenuButtonKind.selectAll:
        items.add(const IOSSystemContextMenuItemSelectAll());
      case ContextMenuButtonKind.lookUp:
        items.add(const IOSSystemContextMenuItemLookUp());
      case ContextMenuButtonKind.searchWeb:
        items.add(const IOSSystemContextMenuItemSearchWeb());
      case ContextMenuButtonKind.share:
        items.add(const IOSSystemContextMenuItemShare());
      case ContextMenuButtonKind.liveTextInput:
        items.add(const IOSSystemContextMenuItemLiveText());
      case ContextMenuButtonKind.delete:
      // No native iOS system menu button for Delete — intentionally ignored.
      case ContextMenuButtonKind.translate:
      // Not mapped to a system menu item yet.
      case ContextMenuButtonKind.custom:
      // Custom items are provided explicitly via SystemContextMenu.items,
      // not via defaults. Intentionally ignore in default mapping.
      case _:
      // Kinds added in the future are ignored until they're mapped here.
    }
  }

  return items;
}