replaceSelectionOrInsert function
Implementation
TextCommandResult replaceSelectionOrInsert(
List<String> graphemes, {
required int cursorOffset,
int? selectionBaseOffset,
int? selectionExtentOffset,
List<String> replacement = const <String>[],
bool replaceSelection = true,
}) {
final selection = normalizedSelectionRange(
selectionBaseOffset,
selectionExtentOffset,
);
final hasSelection = selection != null && selection.start != selection.end;
if (replaceSelection && hasSelection) {
final result = edit_ops.replaceRange(
graphemes,
start: selection.start,
end: selection.end,
replacement: replacement,
);
return TextCommandResult(
graphemes: result.graphemes,
cursorOffset: result.cursorOffset,
changed: selection.start != selection.end || replacement.isNotEmpty,
);
}
final result = edit_ops.insertAtCursor(graphemes, cursorOffset, replacement);
return TextCommandResult(
graphemes: result.graphemes,
cursorOffset: result.cursorOffset,
changed: replacement.isNotEmpty,
);
}