bindings static method

void bindings(
  1. String className
)

Implementation

static void bindings(String className) async {
  // reading bindings.dart file
  String contentFile =
      await FolderAndFileService.readFile(FolderPaths.instance.bindingsFile);

  List<String?> importData = RegExp(r'import.*?;')
      .allMatches(contentFile)
      .map((e) => e.group(0))
      .toList();

  List<String?> bindingData = RegExp(r'Get.*?;')
      .allMatches(contentFile)
      .map((e) => e.group(0))
      .toList();

  bindingData = bindingData.map((e) => "  ${(e ?? "").trim()}").toList();

  importData
      .add("import '../../app/features/${className}_controller.dart';");

  importData.add("import '../../app/repositories/${className}_repo.dart';");

  if (bindingData.isEmpty) {
    // main binding in file
    bindingData.add("Get.lazyPut(() => DioHelper());");

    // main Imports in file
    importData.add("import 'package:get/get.dart';");
    importData.add("import '../networking/base_client.dart';");
  }
  bindingData.add(
      "  Get.lazyPut(() => ${className.toCamelCaseFirstLetterForEachWord()}Repo(Get.find<DioHelper>()), fenix: true);");
  bindingData.add(
      "  Get.lazyPut(() => ${className.toCamelCaseFirstLetterForEachWord()}Controller(${className.toCamelCaseFirstLetterForEachWord().lowerCaseFirstLetter()}Repo : Get.find<${className.toCamelCaseFirstLetterForEachWord()}Repo>()) , fenix: true);");

  String newBindingFile = """
${importData.join("\n")}

class BindingApp extends Bindings {
@override
void dependencies() {
  ${bindingData.join("\n")}
 }
}
""";

  final file = File(FolderPaths.instance.bindingsFile);
  file.writeAsStringSync(newBindingFile);
}