generateController method

String generateController(
  1. String name
)

Implementation

String generateController(String name) {
  final className = toPascalCase(name);
  final variableName = toCamelCase(name);

  if (config.defaultStateManager == 'bloc') {
    return generateBlocController(name);
  }

  return '''
import 'package:get/get.dart';
import '../../domain/entities/${toSnakeCase(name)}_entity.dart';
import '../../domain/usecases/${toSnakeCase(name)}_usecase.dart';

class ${className}Controller extends GetxController {
${className}Controller(this._${variableName}UseCase);

final ${className}UseCase _${variableName}UseCase;

final _isLoading = false.obs;
final _${variableName}List = <${className}Entity>[].obs;

bool get isLoading => _isLoading.value;
List<${className}Entity> get ${variableName}List => _${variableName}List;

@override
void onInit() {
  super.onInit();
  load${className}s();
}

Future<void> load${className}s() async {
  try {
    _isLoading.value = true;
    final result = await _${variableName}UseCase();
    _${variableName}List.value = result;
  } catch (e) {
    Get.snackbar('Error', 'Failed to load ${variableName}s: \$e');
  } finally {
    _isLoading.value = false;
  }
}

Future<void> refresh() async {
  await load${className}s();
}
}
''';
}