evaluateObject static method

Object? evaluateObject(
  1. Object? context,
  2. Object? value, {
  3. bool asElement = true,
  4. DSXResolution dsxResolution = DSXResolution.resolveDSX,
  5. QueryElementProvider? elementProvider,
  6. IntlMessageResolver? intlMessageResolver,
})

Implementation

static Object? evaluateObject(
  Object? context,
  Object? value, {
  bool asElement = true,
  DSXResolution dsxResolution = DSXResolution.resolveDSX,
  QueryElementProvider? elementProvider,
  IntlMessageResolver? intlMessageResolver,
}) {
  if (value == null) return null;

  if (value is String) {
    return value;
  } else if (value is bool) {
    return value;
  } else if (value is num) {
    return value;
  } else if (value is List) {
    return value
        .map(
          (e) => evaluateObject(
            context,
            e,
            asElement: asElement,
            dsxResolution: dsxResolution,
            elementProvider: elementProvider,
            intlMessageResolver: intlMessageResolver,
          ),
        )
        .toList();
  } else if (value is Map) {
    return Map.from(
      value.map(
        (k, v) => MapEntry(
          evaluateObject(
            context,
            k,
            asElement: asElement,
            dsxResolution: dsxResolution,
            elementProvider: elementProvider,
            intlMessageResolver: intlMessageResolver,
          ),
          evaluateObject(
            context,
            v,
            asElement: asElement,
            dsxResolution: dsxResolution,
            elementProvider: elementProvider,
            intlMessageResolver: intlMessageResolver,
          ),
        ),
      ),
    );
  } else if (value is DSX) {
    if (dsxResolution.resolve) {
      var resolver = value.createResolver(
        lifecycleManager: dsxResolution.lifecycleManager,
      );
      var res = asElement
          ? resolver.resolveElement(
              elementProvider: elementProvider,
              intlMessageResolver: intlMessageResolver,
            )
          : resolver.resolveValue(
              elementProvider: elementProvider,
              intlMessageResolver: intlMessageResolver,
            );
      return evaluateObject(
        context,
        res,
        asElement: asElement,
        dsxResolution: dsxResolution,
        elementProvider: elementProvider,
        intlMessageResolver: intlMessageResolver,
      );
    } else {
      return value.toString();
    }
  } else if (value is Function(Map? a)) {
    var res = value(context as Map<dynamic, dynamic>?);
    return evaluateObject(
      context,
      res,
      asElement: asElement,
      dsxResolution: dsxResolution,
      elementProvider: elementProvider,
      intlMessageResolver: intlMessageResolver,
    );
  } else if (value is Function(Object? a)) {
    var res = value(context);
    return evaluateObject(
      context,
      res,
      asElement: asElement,
      dsxResolution: dsxResolution,
      elementProvider: elementProvider,
      intlMessageResolver: intlMessageResolver,
    );
  } else if (value is Function()) {
    var res = value();
    return evaluateObject(
      context,
      res,
      asElement: asElement,
      dsxResolution: dsxResolution,
      elementProvider: elementProvider,
      intlMessageResolver: intlMessageResolver,
    );
  } else {
    return value;
  }
}