getNullableEnumProperty<TEnum> method

Property<TEnum?> getNullableEnumProperty<TEnum>(
  1. String name,
  2. List<TEnum> enumValues, {
  3. TEnum defaultValue()?,
  4. bool isImmutable = true,
})

Implementation

Property<TEnum?> getNullableEnumProperty<TEnum>(
  String name,
  List<TEnum> enumValues, {
  TEnum Function()? defaultValue,
  bool isImmutable = true,
}) {
  return getNullableProperty<TEnum>(
    name,
    (s) {
      var lowerCaseInput = s.toLowerCase();
      return enumValues.firstWhere(
        (e) {
          var enumString = e.toString().toLowerCase();
          if (enumString == lowerCaseInput) {
            return true;
          }
          var lastPart = enumString.split('.').last;
          return lastPart == lowerCaseInput;
        },
        orElse: defaultValue ?? (() => null) as TEnum Function()?,
      );
    },
    defaultValue ?? () => null,
    isImmutable: isImmutable,
  );
}