deserializeValue<T> function
T?
deserializeValue<T>(
- dynamic value
Basic deserialization function. Handles:
Implementation
T? deserializeValue<T>(dynamic value) {
if (!(supportedPrimitiveTypes.contains(value.runtimeType) //
||
value is List ||
value is Map ||
value is Set)) {
throw ArgumentError.value(
value.runtimeType,
'type',
'Unsupported input type for deserialization: ${value.runtimeType}',
);
}
if (value is T) {
return value;
}
if (T == Null || value == null) {
return null;
} else if (T == int) {
return int.parse(value) as T;
} else if (T == double) {
return double.parse(value) as T;
} else if (T == String) {
return value.toString() as T;
} else if (T == bool) {
return bool.parse(value) as T;
} else if (T == List) {
return (value as List).map(_fallbackDeserializeValue).toList() as T;
} else if (T == Map) {
return (value as Map).map((k, v) => MapEntry(_fallbackDeserializeValue(k)!, _fallbackDeserializeValue(v))) as T;
}
throw ArgumentError.value(
value,
'value',
'Cannot deserialize value of type ${value.runtimeType} to type $T',
);
}