editableText static method

Widget editableText(
  1. BuildContext context,
  2. EditableTextState state
)

Implementation

static Widget editableText(BuildContext context, EditableTextState state) {
  final value = state.textEditingValue;
  final selection = value.selection;
  final field = state.widget;
  // Apple platforms drop select all once text is selected, macOS always.
  final canSelectAll =
      field.enableInteractiveSelection &&
      !(field.readOnly && field.obscureText) &&
      value.text.isNotEmpty &&
      !(selection.start == 0 && selection.end == value.text.length);
  return TextSelectionMenu(
    owner: state.context,
    anchors: state.contextMenuAnchors,
    buttonItems: [
      for (final item in state.contextMenuButtonItems)
        if (item.type != ContextMenuButtonType.selectAll) item,
      if (!isDesktopPlatform &&
          selection.isCollapsed &&
          canSelectAll &&
          !field.obscureText)
        ContextMenuButtonItem(
          label: UiLocalizations.of(context).select,
          onPressed: () => _selectWord(state),
        ),
      if (canSelectAll)
        ContextMenuButtonItem(
          type: ContextMenuButtonType.selectAll,
          onPressed: () => state.selectAll(SelectionChangedCause.toolbar),
        ),
    ],
  );
}