serializerGeneratorFactory function

SerializerGenerator serializerGeneratorFactory(
  1. DartType type
)

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`.',
  );
}