createController method

Future<void> createController(
  1. String name, {
  2. String withArgument = '',
  3. String onCommand = '',
})

Implementation

Future<void> createController(
  String name, {
  String withArgument = '',
  String onCommand = '',
}) async {
  final isServer = PubspecUtils.isServerProject;
  final extraFolder = PubspecUtils.extraFolder ?? true;
  final useState = PubspecUtilsExt.useState;
  String? stateDir;
  if (useState) {
    var stateSample = StateSample(
      '',
      name,
      isServer,
    );
    if (PubspecUtilsTemplates.stateTemplate.isNotEmpty) {
      stateSample.customContent =
          await loadContent(PubspecUtilsTemplates.stateTemplate, name);
    }
    final stateFile = handleFileCreate(
      name,
      'state',
      onCommand,
      onCommand.isNotEmpty ? extraFolder : true,
      stateSample,
      'states',
    );
    stateDir = Structure.pathToDirImport(stateFile.path);
  }
  var sample = ControllerSample(
    '',
    name,
    stateDir,
    isServer,
  );
  if (withArgument.isNotEmpty) {
    sample.customContent =
        await loadContent(withArgument, name, dir: stateDir);
  }
  var controllerFile = handleFileCreate(
    name,
    'controller',
    onCommand,
    onCommand.isNotEmpty ? extraFolder : true,
    sample,
    'controllers',
  );

  final isVersion5 = PubspecUtilsExt.getxVersion == 5;
  var binindingPath =
      findBindingFromName(controllerFile.path, basename(onCommand));
  var pathSplit = Structure.safeSplitPath(controllerFile.path);
  pathSplit.remove('.');
  pathSplit.remove('lib');
  if (binindingPath.isNotEmpty) {
    await addDependencyToBinding(
      binindingPath,
      name,
      pathSplit.join('/'),
      isVersion5,
    );
  }
}