evaluationContext property

EvaluationContext get evaluationContext

The evaluation context for the form's expressions: the instances, jr:itext, jr:choice-name and custom functions.

Implementation

EvaluationContext get evaluationContext {
  final existing = _evaluationContext;
  if (existing != null) return existing;
  var context = EvaluationContext.forInstance(
    _mainInstance!,
    _instances,
    EvaluationContext(null),
  );
  if (!context.functionHandlers.containsKey('jr:itext')) {
    context.addFunctionHandler(_ItextFunction(this));
  }
  if (!context.functionHandlers.containsKey('jr:choice-name')) {
    context.addFunctionHandler(_ChoiceNameFunction(this));
  }
  context = EvaluationContext.withFilterStrategies(context, [
    ..._customFilterStrategies,
    _equalityIndexStrategy,
    _comparisonCacheStrategy,
  ]);
  _customFunctionHandlers.forEach(context.addFunctionHandler);
  // property() reads the same properties as `property` preloads (one
  // PropertyManager in JavaRosa).
  context.propertyLookup ??= (name) => preloader.properties.getProperty(name);
  return _evaluationContext = context;
}