serialize method

  1. @override
String? serialize(
  1. DartType targetType,
  2. String expression,
  3. TypeHelperContextWithConfig context
)
override

Returns Dart code that serializes an expression representing a Dart object of type targetType.

If targetType is not supported, returns null.

Let's say you want to serialize a class Foo as just its id property of type int.

Treating expression as a opaque Dart expression, the serialize implementation could be a simple as:

String serialize(DartType targetType, String expression) =>
  "$expression.id";
```.

Implementation

@override
String? serialize(
  DartType targetType,
  String expression,
  TypeHelperContextWithConfig context,
) {
  final memberContent = enumValueMapFromType(targetType);

  if (memberContent == null) {
    return null;
  }

  context.addMember(memberContent);

  if (targetType.isNullableType ||
      enumFieldWithNullInEncodeMap(targetType) == true) {
    return '${constMapName(targetType)}[$expression]';
  } else {
    return '${constMapName(targetType)}[$expression]!';
  }
}