프로젝트 최초 커밋
This commit is contained in:
81
lib/models/address_model.dart
Normal file
81
lib/models/address_model.dart
Normal file
@@ -0,0 +1,81 @@
|
||||
/// 주소 모델
|
||||
///
|
||||
/// 우편번호, 시/도, 상세주소로 구성된 주소 정보를 관리합니다.
|
||||
/// 회사 및 지점의 주소 정보를 일관되게 처리하기 위한 모델입니다.
|
||||
class Address {
|
||||
/// 우편번호
|
||||
final String zipCode;
|
||||
|
||||
/// 시/도 (서울특별시, 경기도 등)
|
||||
final String region;
|
||||
|
||||
/// 상세 주소
|
||||
final String detailAddress;
|
||||
|
||||
/// 생성자
|
||||
const Address({this.zipCode = '', this.region = '', this.detailAddress = ''});
|
||||
|
||||
/// 주소를 문자열로 반환합니다. (전체 주소)
|
||||
///
|
||||
/// 예시: "12345 서울특별시 강남구 테헤란로 123"
|
||||
@override
|
||||
String toString() {
|
||||
final List<String> parts = [];
|
||||
|
||||
if (zipCode.isNotEmpty) {
|
||||
parts.add(zipCode);
|
||||
}
|
||||
|
||||
if (region.isNotEmpty) {
|
||||
parts.add(region);
|
||||
}
|
||||
|
||||
if (detailAddress.isNotEmpty) {
|
||||
parts.add(detailAddress);
|
||||
}
|
||||
|
||||
return parts.join(' ');
|
||||
}
|
||||
|
||||
/// 전체 주소에서 Address 객체를 생성합니다.
|
||||
///
|
||||
/// 현재는 우편번호, 시/도, 상세주소를 분리하지 않고 전체를 detailAddress로 저장합니다.
|
||||
/// 기존 데이터 마이그레이션을 위한 메서드입니다.
|
||||
factory Address.fromFullAddress(String fullAddress) {
|
||||
return Address(detailAddress: fullAddress);
|
||||
}
|
||||
|
||||
/// JSON에서 Address 객체를 생성합니다.
|
||||
factory Address.fromJson(Map<String, dynamic> json) {
|
||||
return Address(
|
||||
zipCode: json['zipCode'] ?? '',
|
||||
region: json['region'] ?? '',
|
||||
detailAddress: json['detailAddress'] ?? '',
|
||||
);
|
||||
}
|
||||
|
||||
/// Address 객체를 JSON으로 변환합니다.
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'zipCode': zipCode,
|
||||
'region': region,
|
||||
'detailAddress': detailAddress,
|
||||
};
|
||||
}
|
||||
|
||||
/// 주소가 비어 있는지 확인합니다.
|
||||
bool get isEmpty =>
|
||||
zipCode.isEmpty && region.isEmpty && detailAddress.isEmpty;
|
||||
|
||||
/// 주소가 비어 있지 않은지 확인합니다.
|
||||
bool get isNotEmpty => !isEmpty;
|
||||
|
||||
/// 복사본을 생성하고 일부 필드를 업데이트합니다.
|
||||
Address copyWith({String? zipCode, String? region, String? detailAddress}) {
|
||||
return Address(
|
||||
zipCode: zipCode ?? this.zipCode,
|
||||
region: region ?? this.region,
|
||||
detailAddress: detailAddress ?? this.detailAddress,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user