encode method

  1. @override
void encode(
  1. DateTime value,
  2. Encoder encoder
)
override

Encodes the value using the encoder.

The implementation must use one of the typed Encoders .encode...() methods to encode the value. It is expected to call exactly one of the encoding methods a single time. Never more or less.

Implementation

@override
void encode(DateTime value, Encoder encoder) {
  if (convertUtc) {
    value = value.toUtc();
  }
  if (encoder.canEncodeCustom<DateTime>()) {
    encoder.encodeObject<DateTime>(value);
  } else {
    switch (preferredFormat) {
      case DateTimeFormat.auto:
        if (encoder.isHumanReadable()) {
          encoder.encodeString(value.toIso8601String());
        } else {
          encoder.encodeInt(value.millisecondsSinceEpoch);
        }
      case DateTimeFormat.iso8601:
        encoder.encodeString(value.toIso8601String());

      case DateTimeFormat.unixMilliseconds:
        encoder.encodeInt(value.millisecondsSinceEpoch);
    }
  }
}