TransportCapabilityDelegate
Миксин, предоставляющий интерфейс для управления транспортным слоем в системе Duit UI.
Классы, использующие этот делегат, должны реализовать методы для обработки серверных действий, запросов и соединений с сервером.
Методы
linkDriver
void linkDriver(UIDriver driver);
Связывает делегат с экземпляром драйвера.
executeRemoteAction
Future<Map<String, dynamic>?> executeRemoteAction(
ServerAction action,
Map<String, dynamic> payload,
);
Выполняет серверное действие с переданной полезной нагрузкой.
Параметры:
action— серверное действие для выполненияpayload— дополнительные данные, необходимые для действия
request
Future<Map<String, dynamic>?> request(
String url,
Map<String, dynamic> meta,
Map<String, dynamic> body,
);
Отправляет запрос на сервер.
Параметры:
url— URL для отправки запросаmeta— метаданные запросаbody— тело запроса
connect
Stream<Map<String, dynamic>> connect({
Map<String, dynamic>? initialRequestData,
Map<String, dynamic>? staticContent,
});
Устанавливает соединение с сервером.
Возвращает: Stream, который эмитит события от сервера. Поток может эмитить одно событие при установке соединения или продолжать эмитить события в потоковом режиме.
releaseResources
void releaseResources();
Освобождает внешние ресурсы, подписки или обработчики.
Готовые реализации
- HttpTransportManager — HTTP-транспорт
- WSTransportManager — WebSocket-транспорт
- StubTransportManager — заглушка для тестирования
Пример использования
final class MyCustomTransport with TransportCapabilityDelegate {
void linkDriver(UIDriver driver) {
// Сохранить ссылку на драйвер
}
Stream<Map<String, dynamic>> connect({
Map<String, dynamic>? initialRequestData,
Map<String, dynamic>? staticContent,
}) async* {
// Реализация подключения
yield {'type': 'Container', 'child': ...};
}
Future<Map<String, dynamic>?> executeRemoteAction(
ServerAction action,
Map<String, dynamic> payload,
) async {
// Выполнение действия
return {};
}
Future<Map<String, dynamic>?> request(
String url,
Map<String, dynamic> meta,
Map<String, dynamic> body,
) async {
// Выполнение запроса
return {};
}
void releaseResources() {
// Очистка ресурсов
}
}