Final commit.
This commit is contained in:
55
lib/domain/entity/address.dart
Normal file
55
lib/domain/entity/address.dart
Normal file
@ -0,0 +1,55 @@
|
||||
/// Postanschrift — Value-Object, identitätslos.
|
||||
///
|
||||
/// Tritt im Domain an drei Stellen auf: am `Customer` (Stamm-Adresse) und
|
||||
/// als `deliveryAddressSnapshot` auf der `Delivery` (eingefrorene Kopie der
|
||||
/// Adresse zum Zeitpunkt der Belegerzeugung, damit nachträgliche Änderungen
|
||||
/// am Stammdatensatz die ausgelieferte Tour nicht „verschieben"). Spiegelt
|
||||
/// das Backend-DTO `Address` 1:1.
|
||||
class Address {
|
||||
const Address({
|
||||
required this.street,
|
||||
required this.houseNumber,
|
||||
required this.postalCode,
|
||||
required this.city,
|
||||
required this.country,
|
||||
});
|
||||
|
||||
final String street;
|
||||
final String houseNumber;
|
||||
final String postalCode;
|
||||
final String city;
|
||||
final String country;
|
||||
|
||||
/// Einzeilige Darstellung für Listen/Header.
|
||||
String get oneLine =>
|
||||
'$street $houseNumber, $postalCode $city';
|
||||
|
||||
Address copyWith({
|
||||
String? street,
|
||||
String? houseNumber,
|
||||
String? postalCode,
|
||||
String? city,
|
||||
String? country,
|
||||
}) {
|
||||
return Address(
|
||||
street: street ?? this.street,
|
||||
houseNumber: houseNumber ?? this.houseNumber,
|
||||
postalCode: postalCode ?? this.postalCode,
|
||||
city: city ?? this.city,
|
||||
country: country ?? this.country,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) =>
|
||||
identical(this, other) ||
|
||||
other is Address &&
|
||||
other.street == street &&
|
||||
other.houseNumber == houseNumber &&
|
||||
other.postalCode == postalCode &&
|
||||
other.city == city &&
|
||||
other.country == country;
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(street, houseNumber, postalCode, city, country);
|
||||
}
|
||||
Reference in New Issue
Block a user