onCallJsHandler method
Implementation
Future<dynamic> onCallJsHandler(
String handlerName,
Map<String, dynamic> data,
) async {
final String bridgeSecret = data["_bridgeSecret"];
final String origin = data["origin"];
if (_expectedBridgeSecret != bridgeSecret) {
if (kDebugMode) {
print(
"Bridge access attempt with wrong secret token, possibly from malicious code from origin: " +
origin,
);
}
return null;
}
var isOriginAllowed = false;
var javaScriptHandlersOriginAllowList =
settings?.javaScriptHandlersOriginAllowList;
if (javaScriptHandlersOriginAllowList != null) {
for (String allowedOrigin in javaScriptHandlersOriginAllowList) {
if (RegExp(allowedOrigin).hasMatch(origin)) {
isOriginAllowed = true;
break;
}
}
} else {
// origin is by default allowed if the allow list is null
isOriginAllowed = true;
}
if (!isOriginAllowed) {
if (kDebugMode) {
print("Bridge access attempt from an origin not allowed: " + origin);
}
return null;
}
var obj = {"handlerName": handlerName, "data": data};
final result = await _channel?.invokeMethod<String>("onCallJsHandler", obj);
return result != null ? jsonDecode(result) : null;
}