validateFlutterProjectName static method

void validateFlutterProjectName(
  1. String? name
)

Validates that name is a valid Flutter/Dart package identifier. Throws ValidationException if the name is invalid.

Implementation

static void validateFlutterProjectName(String? name) {
  if (name == null || name.trim().isEmpty) {
    throw const ValidationException(
      'Error: Project name is required.\n\nUsage:\n  flutter_setup create <project_name>',
    );
  }

  final trimmed = name.trim();

  if (trimmed.contains(' ')) {
    throw ValidationException(
      'Error: "$trimmed" is not a valid Flutter package name.\n'
      'Package names cannot contain spaces. Use lowercase letters and underscores (e.g. "${_suggestValidName(trimmed)}").',
    );
  }

  if (trimmed.contains('-')) {
    throw ValidationException(
      'Error: "$trimmed" is not a valid Flutter package name.\n'
      'Package names cannot contain hyphens. Use underscores (e.g. "${trimmed.replaceAll('-', '_').toLowerCase()}").',
    );
  }

  final validPattern = RegExp(r'^[a-z][a-z0-9_]*$');
  if (!validPattern.hasMatch(trimmed)) {
    throw ValidationException(
      'Error: "$trimmed" is not a valid Flutter package name.\n'
      'Package names must start with a lowercase letter and contain only lowercase letters, digits, and underscores.',
    );
  }

  if (_reservedKeywords.contains(trimmed)) {
    throw ValidationException(
      'Error: "$trimmed" is a Dart reserved keyword and cannot be used as a package name.',
    );
  }
}