Перейти к основному содержимому

FocusNodeCommand

Группа команд для управления фокусом элементов интерфейса. Все команды наследуются от базового класса GenericFocusNodeCommand, который в свою очередь наследуется от RemoteCommand.

Поддерживаемые действия​

ДействиеКлассОписание
requestFocusFocusNodeRequestFocusCommandЗапросить фокус для элемента
unfocusFocusNodeUnfocusCommandСнять фокус с элемента
nextFocusFocusNodeNextFocusCommandПереместить фокус на следующий элемент
previousFocusFocusNodePreviousFocusCommandПереместить фокус на предыдущий элемент
focusInDirectionFocusNodeFocusInDirectionCommandПереместить фокус в указанном направлении

Примеры JSON​

Запрос фокуса​

{
"type": "command",
"controllerId": "text_field_id",
"commandData": {
"type": "focusNode",
"action": "requestFocus"
}
}

Запрос фокуса для конкретного узла​

{
"type": "command",
"controllerId": "focus_scope_id",
"commandData": {
"type": "focusNode",
"action": "requestFocus",
"nodeId": "specific_node_id"
}
}

Снятие фокуса​

{
"type": "command",
"controllerId": "text_field_id",
"commandData": {
"type": "focusNode",
"action": "unfocus",
"disposition": "scope"
}
}

Доступные значения disposition:

  • scope - снять фокус в пределах текущей области
  • previouslyFocusedChild - вернуть фокус предыдущему дочернему элементу

Переход к следующему фокусируемому элементу​

{
"type": "command",
"controllerId": "focus_scope_id",
"commandData": {
"type": "focusNode",
"action": "nextFocus"
}
}

Переход к предыдущему фокусируемому элементу​

{
"type": "command",
"controllerId": "focus_scope_id",
"commandData": {
"type": "focusNode",
"action": "previousFocus"
}
}

Перемещение фокуса в направлении​

{
"type": "command",
"controllerId": "focus_scope_id",
"commandData": {
"type": "focusNode",
"action": "focusInDirection",
"direction": "down"
}
}

Доступные направления (TraversalDirection):

  • up - вверх
  • down - вниз
  • left - влево
  • right - вправо

Классы команд​

FocusNodeRequestFocusCommand​

final class FocusNodeRequestFocusCommand extends GenericFocusNodeCommand {
final String? nodeId;

const FocusNodeRequestFocusCommand({
required super.controllerId,
this.nodeId,
...
});
}

FocusNodeUnfocusCommand​

final class FocusNodeUnfocusCommand extends GenericFocusNodeCommand {
final UnfocusDisposition disposition;

const FocusNodeUnfocusCommand({
required super.controllerId,
required this.disposition,
...
});
}

FocusNodeNextFocusCommand​

final class FocusNodeNextFocusCommand extends GenericFocusNodeCommand {
const FocusNodeNextFocusCommand({
required super.controllerId,
...
});
}

FocusNodePreviousFocusCommand​

final class FocusNodePreviousFocusCommand extends GenericFocusNodeCommand {
const FocusNodePreviousFocusCommand({
required super.controllerId,
...
});
}

FocusNodeFocusInDirectionCommand​

final class FocusNodeFocusInDirectionCommand extends GenericFocusNodeCommand {
final TraversalDirection direction;

const FocusNodeFocusInDirectionCommand({
required super.controllerId,
required this.direction,
...
});
}

Связанные типы​