generate method
Implementation
Future<void> generate(List<String> args) async {
print("Flutter Model Generator");
print("------------------------");
final url = _readUrl(args);
if (url == null) {
throw Exception("Missing --url");
}
final json = await _client.get(url);
final schema = SchemaBuilder();
// ---------------------------------------------
// Generate model name from URL
// ---------------------------------------------
final className = NameUtils.classNameFromUrl(url);
final fileName = NameUtils.fileNameFromClassName(className);
print("Model: $className");
print("File: $fileName.dart");
// ---------------------------------------------
// Build schema
// ---------------------------------------------
DartClass root;
if (json is List) {
root = schema.buildFromList(
className: "$className"
"ApiResponse",
jsonList: json,
);
} else if (json is Map<String, dynamic>) {
root = schema.buildFromMap(
className: "$className"
"ApiResponse",
json: json,
);
} else {
throw Exception(
"Unsupported API response type: "
"${json.runtimeType}",
);
}
// ---------------------------------------------
// Generate Dart code
// ---------------------------------------------
final builder = ClassBuilder();
final writer = FileWriter();
await writer.write(
directory: "lib/models",
fileName: "$fileName"
"ApiResponse.dart",
content: builder.buildFile(root),
);
print(
"✔ Generated: lib/models/$fileName"
"ApiResponse.dart",
);
print("Done!");
}