RemoteCommand
Базовый класс, представляющий команду, которая отправляется для управления действиями контроллера. Команда определяет тип действия и содержит данные для его выполнения.
Свойства
| Свойство | Тип | Описание |
|---|---|---|
controllerId | String | Идентификатор контроллера, которому адресована команда |
type | String | Тип команды (animation, bottomSheet, dialog, pageView, focusNode) |
commandData | Map<String, dynamic> | Данные коман ды, специфичные для её типа |
Определение класса
base class RemoteCommand {
final String controllerId;
final String type;
final Map<String, dynamic> commandData;
const RemoteCommand({
required this.controllerId,
required this.type,
required this.commandData,
});
}
Поддерживаемые типы команд
| Тип | Класс | Описание |
|---|---|---|
animation | AnimationCommand | Управление анимацией свойств |
bottomSheet | BottomSheetCommand | Показ/скрытие модальных окон |
dialog | DialogCommand | Показ/скрытие диалоговых окон |
pageView | PageViewCommand | Управление PageView/PageController |
focusNode | FocusNodeCommand | Управление фокусом элементов |
Пример JSON
{
"type": "command",
"controllerId": "widget_id",
"commandData": {
"type": "animation",
"animatedPropKey": "style",
"method": 0,
"trigger": "onAction"
}
}
Использование
Команды отправляются через CommandEvent и обрабатываются контроллерами виджетов. Каждый тип команды имеет свою специализированную реализацию, которая наследуется от RemoteCommand.
// Пример прослушивания команд в контроллере
controller.listenCommand((command) async {
switch (command) {
case AnimationCommand(:final method, :final animatedPropKey):
// Обработка команды анимации
break;
case BottomSheetCommand(:final action, :final content):
// Обработка команды bottom sheet
break;
// ...
}
});
Связанные типы
- UIElementController - контроллер элемент а, принимающий команды
- CommandEvent - событие, содержащее команду