getProperty static method

dynamic getProperty(
  1. dynamic obj,
  2. String? name
)

Gets value of object property specified by its name.

The object can be a user defined object, map or array. The property name correspondently must be object property, map key or array index.

  • obj an object to read property from.
  • name a name of the property to get. Returns the property value or null if property doesn't exist or introspection failed.

Implementation

static dynamic getProperty(obj, String? name) {
  if (obj == null || name == null) {
    return null;
  }

  if (obj is IValueWrapper) obj = obj.innerValue();

  if (obj is Map) {
    var targetKey = name.toLowerCase();
    for (var key in obj.keys) {
      if (key.toString().toString() == targetKey) return obj[key];
    }
  } else if (obj is List) {
    var index = IntegerConverter.toNullableInteger(name);
    return index != null && index < obj.length ? obj[index] : null;
  } else {
    return PropertyReflector.getProperty(obj, name);
  }

  return null;
}