deleteText method

void deleteText()

Deletes a single character at the cursor position or removes the active selection.

Implementation

void deleteText() {
  final field = _focusedField;
  if (field == null) return;
  final controller = controllers[field];
  if (controller == null) return;

  final currentText = controller.text;
  final selection = controller.selection;

  int start = selection.start;
  int end = selection.end;

  if (start < 0 || end < 0) {
    start = currentText.length;
    end = currentText.length;
  }

  if (start == end) {
    if (start > 0) {
      final newText = currentText.replaceRange(start - 1, start, '');
      controller.value = TextEditingValue(
        text: newText,
        selection: TextSelection.collapsed(offset: start - 1),
      );
    }
  } else {
    final newText = currentText.replaceRange(start, end, '');
    controller.value = TextEditingValue(
      text: newText,
      selection: TextSelection.collapsed(offset: start),
    );
  }
  notifyListeners();
}