42 lines
883 B
Dart
42 lines
883 B
Dart
import 'package:equatable/equatable.dart';
|
|
import 'package:city_repository/city_repository.dart';
|
|
|
|
class Region extends Equatable {
|
|
final String name;
|
|
final List<City> cities;
|
|
|
|
const Region({
|
|
required this.name,
|
|
required this.cities,
|
|
});
|
|
|
|
static const empty = Region(name: '', cities: []);
|
|
Region copyWith({
|
|
String? name,
|
|
List<City>? cities,
|
|
}) {
|
|
return Region(
|
|
name: name ?? this.name,
|
|
cities: cities ?? this.cities,
|
|
);
|
|
}
|
|
|
|
bool get isEmpty => this == Region.empty;
|
|
|
|
bool get isNotEmpty => this != Region.empty;
|
|
|
|
Region toEntity() {
|
|
return Region(name: name, cities: cities);
|
|
}
|
|
|
|
static Region fromEntity(RegionEntity entity) {
|
|
return Region(
|
|
name: entity.name,
|
|
cities: entity.cities.map((city) => City.fromEntity(city)).toList(),
|
|
);
|
|
}
|
|
|
|
@override
|
|
List<Object?> get props => [name, cities];
|
|
}
|