initChannelFunctions method
void
initChannelFunctions(
)
override
Implementation
@override
void initChannelFunctions() {
JavascriptRuntime.channelFunctionsRegistered[getEngineInstanceId()] = {};
final setToGlobalObject = evaluate(
"(key, val) => { this[key] = val; }",
).rawResult;
(setToGlobalObject as JSInvokable).invoke([
'sendMessage',
(String channelName, dynamic message) {
final channelFunctions =
JavascriptRuntime.channelFunctionsRegistered[getEngineInstanceId()];
if (channelFunctions == null ||
!channelFunctions.containsKey(channelName)) {
FlutterQjsLogger.warning('No channel $channelName registered');
return null;
}
dynamic payload = message;
if (message is String) {
try {
payload = jsonDecode(message);
} catch (_) {
payload = message;
}
}
return channelFunctions[channelName]!.call(payload);
},
]);
(setToGlobalObject as JSRef).free();
}