walk function
Implementation
void walk(String src,String dist) { //遍历JSON目录生成模板
var srcDire = new Directory(src);
List<FileSystemEntity> list = srcDire.listSync();
File file;
StringBuffer modelToJsonStr = new StringBuffer();
StringBuffer jsonToModelStr = new StringBuffer();
StringBuffer signalModelStr = new StringBuffer();
StringBuffer listModelStr = new StringBuffer();
StringBuffer indexStr = new StringBuffer();
list.forEach((f) {
if (FileSystemEntity.isFileSync(f.path)) {
file = new File(f.path);
var paths = path.basename(f.path).split(".");
String name = paths.first;
String className = name[0].toUpperCase() + name.substring(1);
if (paths.last.toLowerCase() != "json" || name.startsWith("_")) return;
if (name.startsWith("_")) return;
//设置jsonToModel
jsonToModelStr.write(' case $className:\r\n');
jsonToModelStr.write(" return $className.fromJson(json) as T;\r\n");
//设置modelToJson
modelToJsonStr.write(' case $className:\r\n');
modelToJsonStr.write(" return (data as $className).toJson();\r\n");
//singleModel
signalModelStr.write(" case '$className':\r\n");
signalModelStr.write(' return $className.fromJson(json);\r\n');
//listModel
listModelStr.write(" case '$className':\r\n");
listModelStr.write(' return List<$className>.empty();\r\n');
//添加索引,文件名不用大写
indexStr.write("export '$name.dart' ; \r\n");
}
});
var content = _getTemplateContent();
content = replaceContent(content, [jsonToModelStr.toString(),modelToJsonStr.toString(),signalModelStr.toString(),listModelStr.toString()]);
//将生成的模板输出
new File("$DIST/JsonConvert.dart").writeAsStringSync(content);
}