entityToGraphRow<T extends Object> function
- T row,
- EntityEncoder<
T> ? encoder
Encode a transport row without requiring Freezed or JSON code generation.
Implementation
Map<String, Object?> entityToGraphRow<T extends Object>(
T row,
EntityEncoder<T>? encoder,
) {
if (encoder != null) return Map.unmodifiable(encoder(row));
if (row is Map<String, Object?>) return Map.unmodifiable(row);
try {
// Dynamic access is intentionally isolated at this adapter boundary.
// ignore: avoid_dynamic_calls
final encoded = (row as dynamic).toJson() as Map<String, dynamic>;
return Map.unmodifiable(encoded.cast<String, Object?>());
} on Object catch (error) {
throw TerminalError(
'No EntityEncoder was supplied for ${row.runtimeType}: $error',
);
}
}