generate method

dynamic generate()

Implementation

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

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

  String itemList = "";
  String itemImage = "";
  String itemImageImport = "";

  for (var field in module.fields!) {
    if (!field.hidden) {
      final fieldName = field.name.camelCase;
      if (field.input == 'image') {
        itemImageImport =
            "import 'package:cached_network_image/cached_network_image.dart';";

        itemImage += """if ($varName.$fieldName.isNotEmpty)
            CachedNetworkImage(
              imageUrl:$varName.$fieldName,
              width: double.infinity,
              fit: BoxFit.cover,
            ),
          const SizedBox(
            height: 16.0,
          ),
        """;
      } else {
        itemList += """
        TextInfo(
            title: "${field.name.camelCase}",
            value: $varName.${field.name.camelCase}${(field.type == 'int' || field.type == 'double') ? '.toString()' : ''},
          ),
        """;
      }
    }
  }

  String template = viewItemDetailTemplate();
  template = template.replaceAll('@className', className);
  template = template.replaceAll('@modelName', modelName);
  template = template.replaceAll('@varName', varName);
  template = template.replaceAll('@packageName', PubspecUtil.projectName!);
  template = template.replaceAll('@filename', filenameModel);
  template = template.replaceAll('@importImage', itemImageImport);
  template = template.replaceAll('@itemImage', itemImage);
  template = template.replaceAll('@itemList', itemList);

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