convertEnumToString<T extends Enum> static method

Tuple2<Getter, Setter> convertEnumToString<T extends Enum>(
  1. Getter<T?> getter,
  2. Setter<T?> setter,
  3. Iterable<T> values
)

Converts the pair of Getter and Setter for an enum into the appropriate pair for storage (a String)

values is the list of possible values that the enum has (ex. ExampleEnum.values)

Implementation

static Tuple2<Getter<dynamic>, Setter<dynamic>>
    convertEnumToString<T extends Enum>(
  Getter<T?> getter,
  Setter<T?> setter,
  Iterable<T> values,
) {
  return Tuple2(
    () {
      final value = getter();
      return value?.name;
    },
    (val) => setter(
      val == null
          ? null
          : values.map<T?>((e) => e).firstWhere(
                (element) => val == element?.name,
                orElse: () => null,
              ),
    ),
  );
}