feat: handle Delete key

This commit is contained in:
Vincent Chan 2022-07-19 18:40:01 +08:00
parent 8c6c9f7c0d
commit 7b513a71a9

View File

@ -166,6 +166,27 @@ class __TextNodeWidgetState extends State<_TextNodeWidget>
..commit();
}
_setEditingStateFromGlobal();
}
_forwardDeleteTextAtSelection(TextSelection? sel) {
if (sel == null) {
return;
}
if (sel.isCollapsed) {
TransactionBuilder(editorState)
..deleteText(node, sel.start, 1)
..commit();
} else {
TransactionBuilder(editorState)
..deleteText(node, sel.start, sel.extentOffset - sel.baseOffset)
..commit();
}
_setEditingStateFromGlobal();
}
_setEditingStateFromGlobal() {
_textInputConnection?.setEditingState(TextEditingValue(
text: _textContentOfDelta(node.delta),
selection: _globalSelectionToLocal(node, editorState.cursorSelection) ??
@ -185,6 +206,8 @@ class __TextNodeWidgetState extends State<_TextNodeWidget>
_globalSelectionToLocal(node, editorState.cursorSelection);
if (value.logicalKey.keyLabel == "Backspace") {
_backDeleteTextAtSelection(sel);
} else if (value.logicalKey.keyLabel == "Delete") {
_forwardDeleteTextAtSelection(sel);
}
}
}),