validateFlutterProjectName static method
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.',
);
}
}