evaluate static method
dynamic
evaluate(
- dynamic calculateConfig,
- Map<
String, dynamic> formData, { - ComponentModel? component,
Evaluates a calculateValue expression and returns the result.
Supports:
- JSONLogic expressions (recommended)
- JavaScript expressions (Form.io compatibility)
Example calculateValue (JSONLogic):
{
"calculateValue": {
"*": [{"var": "data.price"}, {"var": "data.quantity"}]
}
}
Example calculateValue (JavaScript):
{
"calculateValue": "value = data.price * data.quantity * 1.18"
}
calculateConfig - The calculateValue configuration (JSONLogic or JavaScript string)
formData - Current form data to use in calculation
Returns the calculated value, or null if calculation fails.
Implementation
static dynamic evaluate(dynamic calculateConfig, Map<String, dynamic> formData, {ComponentModel? component}) {
if (calculateConfig == null) {
return null;
}
// If it's a map, treat as JSONLogic
if (calculateConfig is Map<String, dynamic>) {
return _evaluateJSONLogic(calculateConfig, formData, component: component);
}
// If it's a string starting with 'value', it's JavaScript
if (calculateConfig is String && calculateConfig.trim().startsWith('value')) {
return _evaluateJavaScript(calculateConfig, formData, component: component);
}
// Unknown format
return null;
}