sanitize method
Sanitizes an arbitrary string into a valid, lowercase Dart package name.
Ensures:
- Only lowercase ASCII letters, numbers, and underscores.
- Does not start with a number.
- Collapses consecutive underscores and trims leading/trailing underscores.
- Avoids reserved Dart language keywords.
- Falls back to
'app'if the result is empty or invalid.
Implementation
String sanitize(String name) {
var result = name
.toLowerCase()
.trim()
.replaceAll(RegExp(r'[^a-z0-9_]'), '_')
.replaceAll(RegExp(r'_+'), '_');
// Remove leading numbers and leading underscores
result = result.replaceFirst(RegExp(r'^[^a-z]+'), '');
// Remove trailing underscores
result = result.replaceFirst(RegExp(r'_+$'), '');
if (result.isEmpty || reservedKeywords.contains(result)) {
return 'app';
}
return result;
}