toSerializable property
Object?
get
toSerializable
Converts an object to a serializable format
Implementation
Object? get toSerializable {
final Object? self = this;
if (self == null) return null;
// Handle primitive types that are already serializable
if (self is String || self is int || self is double || self is bool) {
return self;
}
// Handle DateTime - convert to ISO string
if (self is DateTime) {
return self.toIso8601String();
}
// Handle Duration - convert to microseconds
if (self is Duration) {
return self.inMicroseconds;
}
// Handle Uri - convert to string
if (self is Uri) {
return self.toString();
}
// Handle Color - convert to hex string
if (self is Color) {
return self.toHex();
}
// Handle Uint8List - convert to Base64 string
if (self is Uint8List) {
return base64Encode(self);
}
// Handle List - recursively serialize elements
if (self is List) {
return self.map((Object? item) => item.toSerializable).toList();
}
// Handle Set - convert to list and recursively serialize
if (self is Set) {
return self.map((Object? item) => item.toSerializable).toList();
}
// Handle Map - convert keys to strings and recursively serialize values
if (self is Map) {
final Map<String, Object?> result = <String, Object?>{};
for (final MapEntry<Object?, Object?> entry in self.entries) {
final Object? key = entry.key;
final Object? value = entry.value;
final String keyString = key is String ? key : key.toString();
result[keyString] = value.toSerializable;
}
return result;
}
// Handle objects that implement ToJsonable interface
if (self is BaseDataModel) {
final String result = self.toJson();
return result.toSerializable;
}
// Handle Enum types - convert to string representation
if (self is Enum) {
return self.name;
}
// Fallback - convert to string
return self.toString();
}