getConvert method

  1. @override
Convert<T, String> getConvert(
  1. Type sourceType
)
override

Implementation

@override
Convert<T,String> getConvert(Type sourceType) {
  var result = converters[sourceType];
  if ( result == null) {
    var typeDescriptor = TypeDescriptor.forType(sourceType);
    Map<String,T> mappings = HashMap<String,T>();

    for ( T e in typeDescriptor.enumValues!)
      mappings[e.name] = e;

    result = Convert<T, String>(
          convertSource: (value) => (value as Enum).name,
          convertTarget: (str) => mappings[str]!,
          sourceType: sourceType,
          targetType: String
    );
    converters[sourceType] = result;
  }

  return result as Convert<T,String>;
}