serializeGeneric<S> static method

S serializeGeneric<S>(
  1. dynamic data
)

Generic serialization of SerializableData and basic Dart types: primitive values (null, num, bool, double, String), lists and maps whose elements are any of these.

Implementation

static S serializeGeneric<S>(dynamic data) {
  if (data is SerializableData) {
    return data.serialize() as S;
  } else if (data is int) {
    return data as S;
  } else if (data is double) {
    return data as S;
  } else if (data is num) {
    return data as S;
  } else if (data is String) {
    return data as S;
  } else if (data is bool) {
    return data as S;
  } else if (data is Float32x4) {
    return data as S;
  } else if (data is Int32x4) {
    return data as S;
  } else if (data is Float64x2) {
    return data as S;
  } else if (data is MapEntry) {
    return MapEntry(serializeGeneric(data.key), serializeGeneric(data.key))
        as S;
  } else if (data is Uint8List) {
    return data.serialize() as S;
  } else if (data is Uint16List) {
    return data.serialize() as S;
  } else if (data is Uint32List) {
    return data.serialize() as S;
  } else if (data is Int8List) {
    return data.serialize() as S;
  } else if (data is Int16List) {
    return data.serialize() as S;
  } else if (data is Int32List) {
    return data.serialize() as S;
  } else if (data is Float32List) {
    return data.serialize() as S;
  } else if (data is Float64List) {
    return data.serialize() as S;
  } else if (data is Float32x4List) {
    return data.serialize() as S;
  } else if (data is Int32x4List) {
    return data.serialize() as S;
  } else if (data is Float64x2List) {
    return data.serialize() as S;
  } else if (data is List) {
    return data.serialize() as S;
  } else if (data is Map) {
    return data.serialize() as S;
  } else if (data is Set) {
    return data.serialize() as S;
  } else if (data is Iterable) {
    return data.serialize() as S;
  } else {
    throw StateError(
        "Can't perform a generic serialization on type: ${data.runtimeType}");
  }
}