resolveEnsembleThemeName function
Resolves a device/step theme value to an Ensemble Themes entry name.
Accepts aliases (light → Light, dark → Dark) and case-insensitive
matches against registered theme names when registeredNames is provided.
Implementation
String? resolveEnsembleThemeName(
String? raw, {
List<String> registeredNames = const [],
}) {
final value = raw?.trim();
if (value == null || value.isEmpty) return null;
final aliased = switch (value.toLowerCase()) {
'light' => 'Light',
'dark' => 'Dark',
_ => value,
};
if (registeredNames.isEmpty) return aliased;
for (final name in registeredNames) {
if (name == aliased) return name;
}
for (final name in registeredNames) {
if (name.toLowerCase() == aliased.toLowerCase()) return name;
}
for (final name in registeredNames) {
if (name.toLowerCase() == value.toLowerCase()) return name;
}
return null;
}