Files
packages.dart/deprecated/widget_gen/lib/src/template/properties/enum.dart
T
2026-01-15 17:36:22 -08:00

77 lines
2.0 KiB
Dart

import 'impl.dart';
class EnumOptionTemplate extends SettingsImpl {
String defaultValue;
bool isPrivate;
List values;
@override
String name;
@override
String key;
@override
String propertyType;
@override
String access() {
final sb = StringBuffer();
sb.writeln("List<$propertyType> get ${name}Values => [");
for (final item in values) {
sb.writeln("${_getEnumValueFromString(item)},");
}
sb.writeln("];");
sb.writeln('');
sb.writeln('$propertyType get ${name}Val {');
sb.write("if (params[${name}Key] != null) ");
sb.writeln('{');
sb.write('final _value = ');
sb.writeln("params[${name}Key].toString().replaceAll('#', '');");
final _fallback =
_getEnumValueFromString(defaultValue);
sb.writeln("""
return ${name}Values.firstWhere(
(element) => element.toString() == _value,
orElse: () => $_fallback,
)
""");
sb.writeln(';');
sb.writeln('}');
sb.writeln("return $_fallback;");
sb.writeln('}');
sb.writeln('set ${name}Val($propertyType val) {');
sb.writeln('params[${name}Key] = "\$val";');
sb.writeln('widgetContext.onUpdate(id, widgetData);');
sb.writeln('}');
return sb.toString();
}
String _getEnumValueFromString(item) {
if (item == null) return '';
String description = item.toString().replaceAll('#', '');
// if (!description.contains('(')) {
// return "$propertyType." + describeEnum(item);
// }
return description;
}
}
T getEnum<T>(String val, {T fallback, List<T> values}) {
final _value = val.replaceAll('#', '');
return values.firstWhere(
(element) => element.toString() == _value,
orElse: () => null,
);
}
String describeEnum(String enumEntry) {
final String description = enumEntry.toString();
if (!description.contains('.')) {
return description;
}
final int indexOfDot = description.indexOf('.');
assert(indexOfDot != -1 && indexOfDot < description.length - 1);
return description.substring(indexOfDot + 1);
}