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

RemoteCommand

Базовый класс, представляющий команду, которая отправляется для управления действиями контроллера. Команда определяет тип действия и содержит данные для его выполнения.

Свойства​

СвойствоТипОписание
controllerIdStringИдентификатор контроллера, которому адресована команда
typeStringТип команды (animation, bottomSheet, dialog, pageView, focusNode)
commandDataMap<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,
});
}

Поддерживаемые типы команд​

ТипКлассОписание
animationAnimationCommandУправление анимацией свойств
bottomSheetBottomSheetCommandПоказ/скрытие модальных окон
dialogDialogCommandПоказ/скрытие диалоговых окон
pageViewPageViewCommandУправление PageView/PageController
focusNodeFocusNodeCommandУправление фокусом элементов

Пример 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 - событие, содержащее команду