// Model for an asset face stored in the server class AssetFace { final String id; final String assetId; final String? personId; final int imageWidth; final int imageHeight; final int boundingBoxX1; final int boundingBoxY1; final int boundingBoxX2; final int boundingBoxY2; final String sourceType; const AssetFace({ required this.id, required this.assetId, this.personId, required this.imageWidth, required this.imageHeight, required this.boundingBoxX1, required this.boundingBoxY1, required this.boundingBoxX2, required this.boundingBoxY2, required this.sourceType, }); AssetFace copyWith({ String? id, String? assetId, String? personId, int? imageWidth, int? imageHeight, int? boundingBoxX1, int? boundingBoxY1, int? boundingBoxX2, int? boundingBoxY2, String? sourceType, }) { return AssetFace( id: id ?? this.id, assetId: assetId ?? this.assetId, personId: personId ?? this.personId, imageWidth: imageWidth ?? this.imageWidth, imageHeight: imageHeight ?? this.imageHeight, boundingBoxX1: boundingBoxX1 ?? this.boundingBoxX1, boundingBoxY1: boundingBoxY1 ?? this.boundingBoxY1, boundingBoxX2: boundingBoxX2 ?? this.boundingBoxX2, boundingBoxY2: boundingBoxY2 ?? this.boundingBoxY2, sourceType: sourceType ?? this.sourceType, ); } @override String toString() { return '''AssetFace { id: $id, assetId: $assetId, personId: ${personId ?? ""}, imageWidth: $imageWidth, imageHeight: $imageHeight, boundingBoxX1: $boundingBoxX1, boundingBoxY1: $boundingBoxY1, boundingBoxX2: $boundingBoxX2, boundingBoxY2: $boundingBoxY2, sourceType: $sourceType, }'''; } @override bool operator ==(covariant AssetFace other) { if (identical(this, other)) return true; return other.id == id && other.assetId == assetId && other.personId == personId && other.imageWidth == imageWidth && other.imageHeight == imageHeight && other.boundingBoxX1 == boundingBoxX1 && other.boundingBoxY1 == boundingBoxY1 && other.boundingBoxX2 == boundingBoxX2 && other.boundingBoxY2 == boundingBoxY2 && other.sourceType == sourceType; } @override int get hashCode { return id.hashCode ^ assetId.hashCode ^ personId.hashCode ^ imageWidth.hashCode ^ imageHeight.hashCode ^ boundingBoxX1.hashCode ^ boundingBoxY1.hashCode ^ boundingBoxX2.hashCode ^ boundingBoxY2.hashCode ^ sourceType.hashCode; } }