UserDefinedHandlerKind
Перечисление типов пользовательских обработчиков событий для регистрации в менеджере действий.
Значения
openUrl
UserDefinedHandlerKind.openUrl
Обработчик для событий открытия URL в браузере или приложении.
navigation
UserDefinedHandlerKind.navigation
Обработчик для событий навигации внутри приложения (например, переход на новый экран).
custom
UserDefinedHandlerKind.custom
Обработчик для пользовательских событий с произвольной логикой.
UserDefinedEventHandler
Сигнатура функции-обработчика:
typedef UserDefinedEventHandler = FutureOr<void> Function(
BuildContext context,
String path,
Object? extra,
);
Параметры:
context— контекст виджета для доступа к дереву виджетовpath— путь или URL (в зависимости от типа события)extra— дополнительные данные события (опционально)
Пример использования
final driver = XDriver.remote(
transportManager: HttpTransportManager(...),
);
// Обработчик навигации
driver.attachExternalHandler(
UserDefinedHandlerKind.navigation,
(context, path, extra) {
Navigator.pushNamed(context, path, arguments: extra);
},
);
// Обработчик открытия URL
driver.attachExternalHandler(
UserDefinedHandlerKind.openUrl,
(context, url, extra) async {
final uri = Uri.parse(url);
if (await canLaunchUrl(uri)) {
await launchUrl(uri);
}
},
);
// Кастомный обработчик
driver.attachExternalHandler(
UserDefinedHandlerKind.custom,
(context, key, extra) {
switch (key) {
case 'show_dialog':
showDialog(
context: context,
builder: (_) => AlertDialog(
title: Text(extra?['title'] ?? 'Info'),
content: Text(extra?['message'] ?? ''),
),
);
break;
case 'analytics_event':
analytics.logEvent(key, parameters: extra);
break;
}
},
);