generate method

dynamic generate()

Implementation

generate() async {
  final className = module.name.pascalCase;
  final filename = module.name.toLowerCaseWithUnderscore();
  final varName = module.modelName.camelCase;

  var baseDir = Directory("./lib/modules/$filename/views/widgets/");
  if (await baseDir.exists()) {
    baseDir.createSync(recursive: true);
  }

  String itemAdd = "";
  String itemImportFile = "";

  for (var field in module.fields!) {
    final varTitle = field.name.toPascalCaseSpace();
    final varField = field.name.camelCase;
    final varFieldUpper = field.name.pascalCase;

    if (!field.hidden) {
      switch (field.input) {
        case "image":
          itemImportFile +=
              "import 'package:${PubspecUtil.projectName!}/helpers/widgets/image_text.dart';";

          itemAdd += """
              ImageText(
                  crop: false,
                  image: controller.$varField,
                  imageUrl: controller.$varName != null ? controller.$varName!.$varField : '',
                  onClick: (v) {
                    controller.set$varTitle(v.path);
                  },
                  errorText: controller.$varField,
                ),\n
              """;
          break;
        default:
          itemAdd += """
          EditText(
            title: "$varTitle",
            controller: controller.txt$varFieldUpper,
            validator: Validator.required,
          ),\n
          """;
      }
    }
  }

  String template = viewItemAddTemplate();
  template = template.replaceAll('@className', className);
  template = template.replaceAll('@varName', varName);
  template = template.replaceAll('@packageName', PubspecUtil.projectName!);
  template = template.replaceAll('@filename', filename);
  template = template.replaceAll('@importFile', itemImportFile);
  template = template.replaceAll('@itemInput', itemAdd);

  final file = File('${baseDir.path}/item_add.dart');
  if (!force && file.existsSync()) {
    print('File view item add : ${file.path} is exists');
    return;
  }
  File(file.path).createSync(recursive: true);
  file.writeAsStringSync(template);
  print('File view item add : ${file.path} created');
}