buildConstructor method

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

Implementation

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

  if(properties.isEmpty){
    builder.declareInType(DeclarationCode.fromString(asCode("""
  /// The Constructor for [${clazz.identifier.name}]. You should probably define some fields.
  const ${clazz.identifier.name}();
    """)));
  } else{
    builder.declareInType(DeclarationCode.fromString(asCode("""
  /// The Constructor for [${clazz.identifier.name}].
  /// Null values use the default value in the \$prefixed static const fields.
  ${properties.map((i) => "/// [${i.identifier.name.substring(1)}] ${i.type.fullName}").join("\n    ")}
  const ${clazz.identifier.name}({
     ${properties.map((i) => "${!i.type.isNullable && !i.hasInitializer?"required " : ""} this.${i.identifier.name.substring(1)}${i.hasInitializer ? " = ${i.identifier.name}" : ""}").join(",\n       ")}
  });
  """)));
  }
}