walk function

void walk(
  1. String src,
  2. String dist
)

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);
}