gerarModeloDart static method

StringBuffer gerarModeloDart(
  1. String jsonBody,
  2. String nameClasse
)

Implementation

static StringBuffer gerarModeloDart(String jsonBody, String nameClasse) {
  final Map<String, dynamic> jsonData = json.decode(jsonBody);

  final StringBuffer buffer = StringBuffer();
  final StringBuffer bufferCopyWith = StringBuffer();

  List<String> internalClasses = [];
  GenerateClasses.generateInternalClasses(jsonData, internalClasses);

  Iterable newValue = internalClasses.reversed;
  buffer.writeAll(newValue);

  bufferCopyWith.writeln('  ${ConverterCamelCase.converterCamelCase(nameClasse)} copyWith({');

  buffer.writeln('class ${ConverterCamelCase.converterCamelCase(nameClasse)} {');

  List<String> entryValueFirst = [];
  List<String> entryKey = [];
  List<String> bufferCopyWithString = [];

  for (final entry in jsonData.entries) {
    final key = entry.key;
    String getTipoDart = GetType.getTipoDart(entry);
    buffer.writeln(' final $getTipoDart ${ConverterCamelCase.converterCamelCase(key)};');
    bufferCopyWith.writeln('    $getTipoDart? ${ConverterCamelCase.converterCamelCase(key)},');
    bufferCopyWithString.add(ConverterCamelCase.converterCamelCase(key));
    if(getTipoDart.contains("Model") && getTipoDart.contains("List<")){
      entryValueFirst.add(jsonEncode(entry.value.first));
      entryKey.add("${Capitalize.capitalizeFirstLetter(entry.key)}Model");
    }
  }

  buffer.writeln('\n  ${ConverterCamelCase.converterCamelCase(nameClasse)}({');

  for (final entry in jsonData.entries) {
    final key = entry.key;
    buffer.writeln('    required this.${ConverterCamelCase.converterCamelCase(key)},');
  }

  bufferCopyWith.writeln('  }) => ');
  bufferCopyWith.writeln('    ${ConverterCamelCase.converterCamelCase(nameClasse)} (');
  for(var i in bufferCopyWithString){
    bufferCopyWith.writeln('    $i: $i ?? this.$i,');
  }
  bufferCopyWith.writeln('  );');
  buffer.writeln('  });');

  buffer.writeln('\n  factory ${ConverterCamelCase.converterCamelCase(nameClasse)}.fromJson(Map<String, dynamic> json) => ${ConverterCamelCase.converterCamelCase(nameClasse)}(');

  for (final entry in jsonData.entries) {
    final key = entry.key;
    buffer.writeln('    ${ConverterCamelCase.converterCamelCase(key)}: ${GetFrom.getFromJsonConversion(entry)},');
  }

  buffer.writeln('  );');

  buffer.writeln('\n  Map<String, dynamic> toJson() => {');

  for (final entry in jsonData.entries) {
    final key = entry.key;
    buffer.writeln('    "$key": ${ConverterCamelCase.converterCamelCase(key)},');
  }


  buffer.writeln('  }; \n');

  buffer.writeln(bufferCopyWith);

  buffer.writeln('}\n');

  for(int i = 0 ; i < entryValueFirst.length ; i++){
    buffer.writeln(gerarModeloDart(entryValueFirst[i], entryKey[i]));
  }



  return buffer;
}