handleDelete method

void handleDelete(
  1. bool forward
)

Implementation

void handleDelete(bool forward) {
  final selection = widget.controller.selection;
  final plainText = getTextEditingValue().text;
  var cursorPosition = selection.start;
  var textBefore = selection.textBefore(plainText);
  var textAfter = selection.textAfter(plainText);
  if (selection.isCollapsed) {
    if (!forward && textBefore.isNotEmpty) {
      final characterBoundary =
          _previousCharacter(textBefore.length, textBefore, true);
      textBefore = textBefore.substring(0, characterBoundary);
      cursorPosition = characterBoundary;
    }
    if (forward && textAfter.isNotEmpty && textAfter != '\n') {
      final deleteCount = _nextCharacter(0, textAfter, true);
      textAfter = textAfter.substring(deleteCount);
    }
  }
  final newSelection = TextSelection.collapsed(offset: cursorPosition);
  final newText = textBefore + textAfter;
  final size = plainText.length - newText.length;
  widget.controller.replaceText(
    cursorPosition,
    size,
    '',
    newSelection,
  );
}