serialize function
dynamic
serialize(
- dynamic value
Basic serialization function. Handles:
- Primitive types: int, double, String, bool
- Nulls
- Lists (recursively serializes elements)
- Maps (recursively serializes keys and values)
- CrystallisMixin objects (calls their serialize method)
- Other types result in an ArgumentError
Implementation
dynamic serialize(dynamic value) => switch (value) {
null => null,
int() || double() || String() || bool() => value,
List() => value.map(serialize).toList(),
Map() => value.map((k, v) => MapEntry(serialize(k), serialize(v))),
CrystallisMixin() => value.serialize(),
_ => throw ArgumentError.value(
value,
'value',
'Cannot serialize value of type ${value.runtimeType}',
),
};