controllerGetX method

String controllerGetX(
  1. String controllerName, {
  2. String repoMethodName = "",
  3. String bodyModel = "",
})

Build base controller using GetX with main method to get data from API

Implementation

String controllerGetX(String controllerName,
    {String repoMethodName = "", String bodyModel = ""}) {
  String controllerClassName =
      '${controllerName.toCamelCaseFirstLetterForEachWord()}Controller';
  String repoClassName =
      '${controllerName.toCamelCaseFirstLetterForEachWord()}Repo';
  String newRepoMethodName = "";

  if (repoMethodName.isEmpty) {
    newRepoMethodName =
        "${controllerName.toCamelCaseFirstLetterForEachWord().lowerCaseFirstLetter()}Repo.getTodosApiUrlData()";
  } else {
    newRepoMethodName =
        "${repoClassName.lowerCaseFirstLetter()}.$repoMethodName($bodyModel)";
  }

  return '''
import 'package:get/get.dart';

import '../../../core/networking/api_result.dart';
import '../../../core/networking/enums_networking.dart';
${bodyModel.isEmpty ? "" : "import '../data/models/${controllerName.toLowerCase()}_body_model.dart';"}
import '../repositories/${controllerName.toLowerCase()}_repo.dart';

class $controllerClassName extends GetxController {
$repoClassName ${repoClassName.lowerCaseFirstLetter()};

$controllerClassName({required this.${repoClassName.lowerCaseFirstLetter()}});

ApiResult apiResult = ApiResult();

// getting data from api
getData() async {
  apiResult.apiCallStatus = ApiCallStatus.loading;
  update();

  apiResult = await $newRepoMethodName;
  apiResult.handelRequest(success: (apiResul){}, error: (apiResul){});

  update();
}


@override
void onInit() {
  getData();
  super.onInit();
}
}
''';
}