handleKeyEvent method
Moves focus between fields using Tab/Shift-Tab, and routes other events to the active field.
Implementation
void handleKeyEvent(KeyEvent event) {
if (_state != null) {
_state!.handleKeyEvent(event);
return;
}
if (fields.isEmpty) return;
if (event.key == 'tab' || event.key == '\t') {
fields[activeFieldIndex].focused = false;
activeFieldIndex = (activeFieldIndex + 1) % fields.length;
fields[activeFieldIndex].focused = true;
} else if (event.key == 'backtab') {
fields[activeFieldIndex].focused = false;
activeFieldIndex = (activeFieldIndex - 1 + fields.length) % fields.length;
fields[activeFieldIndex].focused = true;
} else if (event.type == KeyType.enter) {
final currentField = fields[activeFieldIndex];
currentField.validate();
if (currentField is! TextAreaFormField) {
currentField.focused = false;
activeFieldIndex = (activeFieldIndex + 1) % fields.length;
fields[activeFieldIndex].focused = true;
} else {
currentField.handleKeyEvent(event);
}
} else {
fields[activeFieldIndex].handleKeyEvent(event);
}
}