import 'package:oc_front/models/abstract.dart'; import 'package:oc_front/models/search.dart'; import 'package:oc_front/models/workspace.dart'; Map refs = { RawData: RawData(), Search: Search(), Workspace: Workspace(), DataItem: DataItem(), DataCenterItem: DataCenterItem(), StorageItem: StorageItem(), ComputingItem: ComputingItem(), }; class APIResponse { APIResponse({ this.data, this.error = "", this.offset = 0, }); int offset = 0; T? data ; String? error = ""; SerializerDeserializer? getTypeString() { try { return refs[refs.keys.firstWhere((ref) => '$ref' == '$T')]; } catch (e) { return null; } } APIResponse deserialize(dynamic j) { try { return APIResponse( data: refs[T]!.deserialize(j), error: j.containsKey("error") && j["error"] != null ? j["error"] : "", ); } catch (e) { return APIResponse( data: refs[T]!.deserialize(j), ); } } } class RawData extends SerializerDeserializer { RawData({ this.values = const []}); dynamic values; @override deserialize(dynamic json) { return RawData(values: json); } @override Map serialize() => { }; }