addFlavor static method
Implementation
static bool addFlavor(String flavor) {
final config = load();
final normalized = _normalize(flavor);
if (!_isValidFlavor(normalized)) {
throw Exception('❌ Invalid flavor name: "$flavor"');
}
if (config.flavors.contains(normalized)) {
return false; // already exists
}
final updatedFlavors = List<String>.from(config.flavors)..add(normalized);
// Initialize empty values for new flavor to satisfy validator
final updatedValues = Map<String, Map<String, dynamic>>.from(
config.flavorValues,
);
updatedValues[normalized] = {
for (final field in config.fields.keys)
field: TypeUtils.getDefaultTypedValueForType(
config.fields[field] ?? "String",
),
};
FlavorConfig updatedConfig = config.copyWith(
flavors: updatedFlavors,
flavorValues: updatedValues,
);
// Also add to flavorAppNames if defined
if (updatedConfig.flavorAppNames != null) {
final newAppNames = Map<String, String>.from(
updatedConfig.flavorAppNames!,
);
// Generate app name: production flavor gets base name, others get "appName-flavor"
newAppNames[normalized] = normalized == updatedConfig.productionFlavor
? updatedConfig.appName
: '${updatedConfig.appName}-$normalized';
updatedConfig = updatedConfig.copyWith(flavorAppNames: newAppNames);
}
save(updatedConfig);
return true;
}