injectSpecialKey method
void
injectSpecialKey(
- String key
)
Implementation
void injectSpecialKey(String key) {
if (_activeController == null) return;
final ctrl = _activeController!;
final text = ctrl.text;
final sel = ctrl.selection;
final pos = sel.start < 0 ? text.length : sel.start;
switch (key) {
case 'backspace':
if (pos > 0) {
final newText = text.replaceRange(
sel.start == sel.end ? pos - 1 : sel.start,
sel.end < 0 ? text.length : sel.end,
'',
);
ctrl.value = TextEditingValue(
text: newText,
selection: TextSelection.collapsed(
offset: sel.start == sel.end ? pos - 1 : sel.start,
),
);
}
break;
case 'enter':
// Submit the focused field
_focusedNode?.unfocus();
break;
case 'escape':
_focusedNode?.unfocus();
break;
case 'space':
injectText(' ');
break;
case 'tab':
// Move to next focusable widget
_focusedNode?.nextFocus();
break;
case 'arrow_left':
if (pos > 0) {
ctrl.selection = TextSelection.collapsed(offset: pos - 1);
}
break;
case 'arrow_right':
if (pos < text.length) {
ctrl.selection = TextSelection.collapsed(offset: pos + 1);
}
break;
}
}