aves/lib/model/metadata/address.dart
Thibault Deckers 0584e8ffa7 refactor
2023-03-29 16:03:10 +02:00

56 lines
1.4 KiB
Dart

import 'package:aves/geo/states.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter/foundation.dart';
@immutable
class AddressDetails extends Equatable {
final int id;
final String? countryCode, countryName, adminArea, locality;
@override
List<Object?> get props => [id, countryCode, countryName, adminArea, locality];
String? get place => locality != null && locality!.isNotEmpty ? locality : adminArea;
String? get stateCode => GeoStates.stateCodeByName[stateName];
String? get stateName => GeoStates.stateCountryCodes.contains(countryCode) ? adminArea : null;
const AddressDetails({
required this.id,
this.countryCode,
this.countryName,
this.adminArea,
this.locality,
});
AddressDetails copyWith({
int? id,
}) {
return AddressDetails(
id: id ?? this.id,
countryCode: countryCode,
countryName: countryName,
adminArea: adminArea,
locality: locality,
);
}
factory AddressDetails.fromMap(Map map) {
return AddressDetails(
id: map['id'] as int,
countryCode: map['countryCode'] as String?,
countryName: map['countryName'] as String?,
adminArea: map['adminArea'] as String?,
locality: map['locality'] as String?,
);
}
Map<String, dynamic> toMap() => {
'id': id,
'countryCode': countryCode,
'countryName': countryName,
'adminArea': adminArea,
'locality': locality,
};
}