getValue<T> method

dynamic getValue<T>(
  1. dynamic reflectee,
  2. Symbol key,
  3. dynamic value
)

Implementation

getValue<T>(dynamic reflectee, Symbol key, dynamic value) {
  final r = reflect(reflectee);

  var valueType = value.runtimeType;
  if (RAW_TYPES.contains(valueType)) {
    return value;
  }

  var def = r.type.declarations[key];
  if (def == null || def is! VariableMirror) {
    return null;
  }

  var rType = def.type;
  if (rType is! ClassMirror) {
    return null;
  }

  final objectType = MirrorSystem.getName(rType.simpleName).toString();
  switch (objectType.toLowerCase()) {
    case 'map' || 'set' || 'list':
      break;
    default:
      return rType.newInstance(Symbol('fromEntries'), [value]).reflectee;
  }
}