addStatesToController function

Future<void> addStatesToController(
  1. String path,
  2. String controllerName,
  3. String import,
  4. String name,
)

Implementation

Future<void> addStatesToController(
  String path,
  String controllerName,
  String import,
  String name,
) async {
  import = '''import 'package:${PubspecUtils.projectName}/$import';''';
  final insertState = '${name.pascalCase}State';
  var file = File(path);
  if (file.existsSync()) {
    var lines = file.readAsLinesSync();

    final contains = lines.any((element) => element.contains(insertState));
    if (!contains) {
      lines.insert(2, import);
      var index = lines.indexWhere((element) {
        element = element.trim();
        return element.startsWith(
          'class ${controllerName.pascalCase}Controller extends GetxController {',
        );
      });
      index++;

      String insertContent;
      if (PubspecUtilsTemplates.insertStateTemplate.isNotEmpty) {
        insertContent = await loadContent(
          PubspecUtilsTemplates.insertStateTemplate,
          controllerName,
        );
      } else {
        insertContent = 'final $insertState ${name}State = $insertState();';
      }

      lines.insert(
        index,
        insertContent,
      );

      writeFile(
        file.path,
        lines.join('\n'),
        overwrite: true,
        logger: false,
        useRelativeImport: true,
      );
      LogService.success(
        LocaleKeys.sucess_add_state_in_controller.trArgs(
          [
            '${name.pascalCase}State',
            path,
          ],
        ),
      );
    }
  }
}