addConverterFactory method
Registers a ConverterFactory that can produce Converter instances for a target type.
🔧 Example
registry.addConverterFactory(StringToEnumConverterFactory());
Implementation
@override
void addConverterFactory(ConverterFactory<dynamic, dynamic> factory) {
final clazz = factory.getClass(null, factory.getPackageName());
// We'll try to access the [ConverterFactory] class as an interface first
List<Class> types = clazz.getDeclaredInterface<ConverterFactory>()?.getTypeParameters() ?? [];
// If it fails, we'll try to access it as a superclass
if(types.isEmpty) {
types = clazz.getDeclaredSuperClass()?.getTypeParameters() ?? [];
}
if (types.isEmpty || types.length.isLessThan(2)) {
throw ConversionException('Unable to determine source type and target type for your '
'ConverterFactory [${factory.runtimeType}]; does the class parameterize those types?');
}
addPairedConverter(_PairedConverterFactoryAdapter(factory, ConvertiblePair(types.getFirst(), types.getLast()), _pd, _convertNullableSource));
}