ServerActionExecutionCapabilityDelegate
Миксин, предоставляющий интерфейс для выполнения серверных действий ServerAction и обработки серверных событий ServerEvent.
Методы
execute
Future<void> execute(ServerAction action);
Выполняет указанное серверное действие.
Реализации должны предоставить логику обработки и выполнения ServerAction, которая может включать коммуникацию с внешним API, выполнение скриптов или локальных операций.
preparePayload
Map<String, dynamic> preparePayload(
Iterable<ActionDependency> dependencies,
);
Подготавливает и возвращает payload из переданных зависимостей для отправки вместе с действием.
Обычно используется для извлечения локальных значений, состояния форм или данных, на которые ссылается действие.
resolveEvent
Future<void> resolveEvent(BuildContext context, eventData);
Обрабатывает и разрешает входящее событие в указанном контексте.
Параметры:
context— контекст виджета для навигации, диалогов и обновления состоянияeventData— данные события (обычно распарсенныйServerEvent)
addExternalEventStream
void addExternalEventStream(Stream<Map<String, dynamic>> stream);
Регистрирует внешний поток событий для обработки делегатом.
Позволяет интегрировать внешние источники событий (сокеты, платформенные каналы и т.д.) в систему обработки событий Duit.
attachExternalHandler
void attachExternalHandler(
UserDefinedHandlerKind type,
UserDefinedEventHandler handle,
);
Регистрирует внешний обработчик для указанного типа пользовательского события.
Параметры:
type— тип обработчика (UserDefinedHandlerKind)handle— функция-обработчик события
releaseResources
void releaseResources();
Освобождает внешние ресурсы, подписки и обработчики.
UserDefinedHandlerKind
Перечисление типов пользовательских обработчиков событий:
enum UserDefinedHandlerKind {
/// Обработчик для открытия URL
openUrl,
/// Обработчик для навигации
navigation,
/// Обработчик для пользовательских событий
custom,
}
UserDefinedEventHandler
Сигнатура функции-обработчика пользовательских событий:
typedef UserDefinedEventHandler = FutureOr<void> Function(
BuildContext context,
String path,
Object? extra,
);
Пример использования
// Регистрация обработчика навигации
driver.attachExternalHandler(
UserDefinedHandlerKind.navigation,
(context, path, extra) {
Navigator.pushNamed(context, path, arguments: extra);
},
);
// Регистрация обработчика открытия URL
driver.attachExternalHandler(
UserDefinedHandlerKind.openUrl,
(context, url, extra) async {
if (await canLaunchUrl(Uri.parse(url))) {
await launchUrl(Uri.parse(url));
}
},
);
// Регистрация кастомного обработчика
driver.attachExternalHandler(
UserDefinedHandlerKind.custom,
(context, key, extra) {
print('Custom event: $key with data: $extra');
},
);