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

HttpTransportManager

Менеджер HTTP-транспорта для работы с удаленным сервером Duit.

Реализует TransportCapabilityDelegate и обеспечивает HTTP-связь с сервером для получения UI-разметки и выполнения серверных действий.

Конструктор​

HttpTransportManager({
required String url,
String baseUrl = "",
Map<String, String> defaultHeaders = const {},
void Function(Request request)? requestInterceptor,
void Function(Object? error)? errorInterceptor,
Converter<Object?, String>? encoder,
Converter<Uint8List, Object?>? decoder,
String initialRequestMethod = "GET",
bool useSSEConn = false,
});

Параметры​

ПараметрТипПо умолчаниюОписание
urlString—URL для первоначального запроса (обязательный)
baseUrlString""Базовый URL для всех HTTP-запросов
defaultHeadersMap<String, String>{}Заголовки, добавляемые к каждому запросу
requestInterceptorFunction?nullПерехватчик для модификации запросов перед отправкой
errorInterceptorFunction?nullОбработчик ошибок HTTP-запросов
encoderConverter?nullКастомный кодировщик для тела запроса
decoderConverter?nullКастомный декодер для ответа сервера
initialRequestMethodString"GET"HTTP-метод для первоначального запроса
useSSEConnboolfalseВключить режим SSE (Server-Sent Events)

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

Базовое использование​

final driver = XDriver.remote(
transportManager: HttpTransportManager(
url: '/api/layout',
baseUrl: 'https://api.example.com',
),
);

С кастомными заголовками и перехватчиками​

final driver = XDriver.remote(
transportManager: HttpTransportManager(
url: '/api/layout',
baseUrl: 'https://api.example.com',
defaultHeaders: {
'Authorization': 'Bearer $token',
'X-Custom-Header': 'value',
},
requestInterceptor: (request) {
print('Sending request to: ${request.url}');
},
errorInterceptor: (error) {
print('HTTP Error: $error');
},
),
);

С Server-Sent Events (SSE)​

final driver = XDriver.remote(
transportManager: HttpTransportManager(
url: '/api/sse',
baseUrl: 'https://api.example.com',
useSSEConn: true,
),
);
подсказка

Режим SSE позволяет серверу отправлять обновления UI в реальном времени через постоянное HTTP-соединение.