execute method

  1. @override
Future<Map<String, dynamic>> execute(
  1. List arguments,
  2. Map<int, RxElement> elementMap
)
override

Implementation

@override
Future<Map<String, dynamic>> execute(List arguments, elementMap) async {
  // Validate the keystring argument
  if (arguments.length < 2 || arguments[1] is! String) {
    throw ArgumentError(
        "Invalid arguments: Key sequence string is required.");
  }

  String keyString = arguments[1];

  ImeActionMapper.initialize();

  // Handle IME actions (e.g., Enter, Next, Done).
  if (ImeActionMapper.isImeAction(keyString)) {
    TextInputAction? action = ImeActionMapper.toImeAction(keyString);

    if (action != null) {
      final editableTextState = _focusedEditableTextState();

      if (editableTextState != null) {
        editableTextState.performAction(action);
      }
    } else {
      throw ArgumentError("Invalid IME action: $keyString");
    }
  }

  if (_isDeleteKey(keyString)) {
    _deleteBackward();
  }

  return {'success': true, 'key': keyString};
}