buildFromMap method

Future<void> buildFromMap(
  1. ClassDeclaration clazz,
  2. MemberDeclarationBuilder builder
)

Implementation

Future<void> buildFromMap(ClassDeclaration clazz, MemberDeclarationBuilder builder) async {
  List<FieldDeclaration> properties = await validFields(clazz, builder);

  if(properties.isEmpty){
    builder.declareInType(DeclarationCode.fromString(asCode("""
  /// Creates a new [${clazz.identifier.name}] object from a Map<String, dynamic>
  factory ${clazz.identifier.name}.fromMap(Map<String, dynamic> map) => ${clazz.identifier.name}();
    """)));
  } else{
    builder.declareInType(DeclarationCode.fromString(asCode("""
  /// Creates a new [${clazz.identifier.name}] object from a Map<String, dynamic>
  factory ${clazz.identifier.name}.fromMap(Map<String, dynamic> map) => ${clazz.identifier.name}(
      ${properties.map((i) => "${i.identifier.name.substring(1)}: map[\"${i.identifier.name.substring(1)}\"] != null ? ${_fromMap(i, builder)} : ${i.identifier.name}").join(",\n        ")}
  );
  """)));
  }
}