serializerGeneratorFactory function
Creates a SerializerGenerator from a DartType
that represents a bool, DateTime, double, Duration, dynamic
, enum
, int, Iterable, List, num, Set, String, or Uri.
Implementation
SerializerGenerator serializerGeneratorFactory(DartType type) {
if (type is ParameterizedType && type.isDartCoreIterable) {
return IterableSerializerGenerator(
serializerGeneratorFactory(type.typeArguments.single),
isNullable: type.isNullable,
);
} else if (type is ParameterizedType && type.isDartCoreList) {
return ListSerializerGenerator(
serializerGeneratorFactory(type.typeArguments.single),
isNullable: type.isNullable,
);
} else if (type is ParameterizedType && type.isDartCoreSet) {
return SetSerializerGenerator(
serializerGeneratorFactory(type.typeArguments.single),
isNullable: type.isNullable,
);
} else if (type.isDartCoreBool) {
return BoolSerializerGenerator(isNullable: type.isNullable);
} else if (type.isDartCoreDateTime) {
return DateTimeSerializerGenerator(isNullable: type.isNullable);
} else if (type.isDartCoreDouble) {
return DoubleSerializerGenerator(isNullable: type.isNullable);
} else if (type.isDartCoreDuration) {
return DurationSerializerGenerator(isNullable: type.isNullable);
} else if (type is DynamicType) {
return const DynamicSerializerGenerator();
} else if (type.isDartCoreInt) {
return IntSerializerGenerator(isNullable: type.isNullable);
} else if (type.isDartCoreNum) {
return NumSerializerGenerator(isNullable: type.isNullable);
} else if (type.isDartCoreString) {
return const StringSerializerGenerator();
} else if (type.isDartCoreUri) {
return UriSerializerGenerator(isNullable: type.isNullable);
} else if (type is InterfaceType && type.element is EnumElement) {
return EnumSerializerGenerator(
type.element.name,
isNullable: type.isNullable,
);
}
throw ArgumentError.value(
type,
'type',
'The type `$type` is not supported. Change the type `$type` to `bool`, `DateTime`, `double`, `Duration`, `dynamic`, `enum`, `int`, `Iterable`, `List`, `num`, `Set`, `String`, or `Uri`.',
);
}