ScriptingCapabilityDelegate
Миксин, предоставляющий возможности для управления и запуска скриптов в системе Duit UI.
Классы, использующие этот делегат, должны реализовать методы для выполнения, интерпретации и инициализации скриптов.
Методы
evalScript
Future<void> evalScript(String source);
Интерпретирует исходный код скрипта и запускает его компиляцию/интерпретацию.
Параметры:
source— исходный код скрипта
execScript
Future<Map<String, dynamic>?> execScript(
String functionName, {
String? url,
Map<String, dynamic>? meta,
Map<String, dynamic>? body,
});
На основе имени функции запускает её выполнение.
Параметры:
functionName— имя функции для выполненияurl— URL для работы с транспортом (опционально)meta— метаданные (опционально)body— данные для передачи скрипту (опционально)
initScriptingCapability
Future<void> initScriptingCapability();
Инициализирует возможности скриптинга.
releaseResources
void releaseResources();
Освобождает ресурсы делегата.
Пример реализации
final class MyScriptRunner with ScriptingCapabilityDelegate {
late final ScriptEngine _engine;
Future<void> initScriptingCapability() async {
_engine = await ScriptEngine.create();
}
Future<void> evalScript(String source) async {
await _engine.evaluate(source);
}
Future<Map<String, dynamic>?> execScript(
String functionName, {
String? url,
Map<String, dynamic>? meta,
Map<String, dynamic>? body,
}) async {
return await _engine.callFunction(
functionName,
arguments: {
'url': url,
'meta': meta,
'body': body,
},
);
}
void releaseResources() {
_engine.dispose();
}
}
Использование с XDriver
final driver = XDriver.remote(
transportManager: HttpTransportManager(...),
scriptingManager: MyScriptRunner(),
);
подсказка
Подробнее об использовании скриптинга можно узнать в разделе Скриптинг.