gerarModeloDart static method
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;
}