Ответ Гюнтера верен, если немного неполон.
Сериализуемый JSON обрабатывает преобразование Enum в и из строки, вот пример кода, который генерируется:
const _$HoursEnumMap = <Hours, dynamic>{
Hours.FullTime: 'FullTime',
Hours.PartTime: 'PartTime',
Hours.Casual: 'Casual',
Hours.Contract: 'Contract',
Hours.Other: 'Other'
};
ивзамен он преобразует его обратно с помощью этой довольно тупой функции:
T _$enumDecode<T>(Map<T, dynamic> enumValues, dynamic source) {
if (source == null) {
throw ArgumentError('A value must be provided. Supported values: '
'${enumValues.values.join(', ')}');
}
return enumValues.entries
.singleWhere((e) => e.value == source,
orElse: () => throw ArgumentError(
'`$source` is not one of the supported values: '
'${enumValues.values.join(', ')}'))
.key;
}
Мне это так надоело, я решил сделать небольшой пакет, чтобы убрать сложность, и он мне очень пригодился:
https://pub.dev/packages/enum_to_string
По крайней мере, его устройство было протестировано на растворе копирования / вставки.Любые дополнения или запросы тяги приветствуются.