generateFeature function

void generateFeature(
  1. String feature, {
  2. String? architectureType,
})

Scaffolds a feature module named feature inside lib/features/[feature]/.

The generator auto-detects architecture mode from the existing project:

  • Clean Architecture: creates data/domain/presentation layers.
  • Normal Folder Architecture: creates screen/service/provider/model/widgets.

Pass architectureType as clean or normal to force a mode.

Implementation

void generateFeature(String feature, {String? architectureType}) {
  final normalized = normalizeFeatureName(feature);
  if (normalized == null) {
    logError(
      "Invalid feature name: '$feature'. "
      'Use letters, digits, and underscores (e.g. user_profile).',
    );
    return;
  }

  if (normalized != feature) {
    logInfo("Using normalized feature name: '$normalized'");
  }

  final forcedMode = _normalizeArchitectureType(architectureType);

  if (forcedMode == _FeatureArchitectureType.clean ||
      (forcedMode == null && _isCleanArchitectureProject())) {
    _generateCleanFeature(normalized);
    return;
  }

  _generateStandardFeature(normalized);
}