bindFunctionOf method
dynamic
bindFunctionOf(
- String funcName,
- ProxyMirror? proxyMirror,
- BindingData? bound,
- Domain? domain, {
- String? exp,
Implementation
dynamic bindFunctionOf(String funcName, ProxyMirror? proxyMirror,
BindingData? bound, Domain? domain,
{String? exp}) {
if (_functions?[funcName] == null) {
if (RegExp(r'.+\(.+\)', multiLine: false).hasMatch(funcName)) {
var rFuncName = funcName.substring(0, funcName.indexOf('('));
var params = funcName.substring(
funcName.indexOf('(') + 1, funcName.lastIndexOf(')'));
var args = params.split(',').map((e) {
if (RegExp(r'\^\(index\)', multiLine: false).hasMatch(e) &&
domain is IndexDomain?) {
return domain?.index;
} else if (domain != null && domain.match(e)) {
return domain.bindValue(e);
} else {
var r = proxyMirror?.evaluate(null, bound, e, domain: domain);
if (r?.data == null) {
return e;
} else {
return r?.data is ValueNotifier ? r?.data.value : r?.data;
}
}
}).toList();
return ([props]) {
var arguments = [];
if (props != null) {
arguments.add(props);
}
if (args != null) {
arguments.addAll(args);
}
_functions?['runtimeInvokeMethod']?.call(rFuncName, true, arguments);
};
} else {
return ([props]) =>
_functions?['runtimeInvokeMethod']?.call(funcName, false, props);
}
} else {
return _functions?[funcName];
}
}