import 'package:test_sa/models/base.dart'; import 'package:test_sa/models/new_models/building.dart'; class Site extends Base { Site({ this.id, this.custName, this.buildings, }) : super(identifier: id?.toString() ?? '', name: custName); // Handle potential null id Site.fromJson(dynamic json) { id = json['siteId'] ?? json['id']; identifier = id?.toString() ?? ''; // Handle potential null id custName = json['custName']?? json['siteName']; name = custName; if (json['buildings'] != null) { buildings = []; json['buildings'].forEach((v) { buildings!.add(Building.fromJson(v)); // Use '!' since buildings is initialized here }); } else if (json['assetInventoryBuildings'] != null) { buildings = []; json['assetInventoryBuildings'].forEach((v) { buildings!.add(Building.fromJson(v)); }); } } num? id; // Now nullable String? custName; // Now nullable List? buildings; // Now nullable Site copyWith({ num? id, // Parameters are now nullable String? custName, List? buildings, }) => Site( id: id ?? this.id, custName: custName ?? this.custName, buildings: buildings ?? this.buildings, ); Map toJson({bool addBuildings = true}) { final map = {}; map['id'] = id; map['custName'] = custName; if (addBuildings) { if (buildings != null) { map['buildings'] = buildings!.map((v) => v.toJson()).toList(); // Use '!' since buildings could be null } } else { map['buildings'] = []; } return map; } }