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

FocusCapabilityDelegate

Миксин, предоставляющий интерфейс для управления фокусом UI-элементов в системе Duit.

Классы, использующие этот делегат, должны реализовать методы для работы с FocusNode — запрос фокуса, навигация между элементами и управление состоянием фокуса.

Методы​

requestFocus​

void requestFocus(String nodeId);

Запрашивает перемещение фокуса к FocusNode, связанному с указанным nodeId.

nextFocus​

bool nextFocus(String nodeId);

Перемещает фокус к следующему фокусируемому узлу в порядке обхода.

Возвращает: true, если фокус был успешно перемещен.

previousFocus​

bool previousFocus(String nodeId);

Перемещает фокус к предыдущему фокусируемому узлу.

Возвращает: true, если фокус был успешно перемещен.

unfocus​

void unfocus(
String nodeId, {
UnfocusDisposition disposition = UnfocusDisposition.scope,
});

Снимает фокус с указанного узла.

Параметры:

  • nodeId — идентификатор узла
  • disposition — способ обработки фокуса при снятии

focusInDirection​

bool focusInDirection(String nodeId, TraversalDirection direction);

Перемещает фокус в указанном направлении (вверх, вниз, влево, вправо).

attachFocusNode​

void attachFocusNode(String nodeId, FocusNode node);

Привязывает FocusNode к делегату с указанным идентификатором.

detachFocusNode​

void detachFocusNode(String nodeId);

Отвязывает FocusNode с указанным идентификатором.

getNode​

FocusNode? getNode(Object? key);

Возвращает FocusNode, связанный с указанным ключом.

releaseResources​

void releaseResources();

Освобождает ресурсы делегата.

Пример использования​

final class MyFocusManager with FocusCapabilityDelegate {
final _nodes = <String, FocusNode>{};


void attachFocusNode(String nodeId, FocusNode node) {
_nodes[nodeId] = node;
}


void detachFocusNode(String nodeId) {
_nodes.remove(nodeId);
}


void requestFocus(String nodeId) {
_nodes[nodeId]?.requestFocus();
}


FocusNode? getNode(Object? key) => _nodes[key];

// ... остальные методы
}
подсказка

Управление фокусом особенно важно для обеспечения доступности (accessibility) и поддержки клавиатурной навигации в приложениях.

См. также​