101 lines
2.2 KiB
Dart
101 lines
2.2 KiB
Dart
class CitySelectionResponse {
|
|
final List<CitySelection> cities;
|
|
|
|
CitySelectionResponse({required this.cities});
|
|
|
|
factory CitySelectionResponse.fromJson(Map<String, dynamic> json) {
|
|
return CitySelectionResponse(
|
|
cities: (json['cities'] as List<dynamic>?)
|
|
?.map((city) =>
|
|
CitySelection.fromJson(city as Map<String, dynamic>))
|
|
.toList() ??
|
|
[],
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'cities': cities.map((city) => city.toJson()).toList(),
|
|
};
|
|
}
|
|
}
|
|
|
|
class CitySelection {
|
|
// 🔹 EXISTING FIELDS (UNCHANGED)
|
|
final int id;
|
|
final String cityName;
|
|
final String bannerImage;
|
|
|
|
// 🔹 NEW FIELDS (ADDED ONLY)
|
|
final String cityIconPath;
|
|
final CityIcon? icon;
|
|
|
|
CitySelection({
|
|
required this.id,
|
|
required this.cityName,
|
|
required this.bannerImage,
|
|
|
|
// 🔹 ADDED
|
|
required this.cityIconPath,
|
|
required this.icon,
|
|
});
|
|
|
|
factory CitySelection.fromJson(Map<String, dynamic> json) {
|
|
return CitySelection(
|
|
// 🔹 EXISTING
|
|
id: json['id'] as int? ?? 0,
|
|
cityName: json['cityName'] as String? ?? '',
|
|
bannerImage: json['bannerImage'] as String? ?? '',
|
|
|
|
// 🔹 ADDED
|
|
cityIconPath: json['cityIconPath'] as String? ?? '',
|
|
icon: json['icon'] != null
|
|
? CityIcon.fromJson(json['icon'] as Map<String, dynamic>)
|
|
: null,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
// 🔹 EXISTING
|
|
'id': id,
|
|
'cityName': cityName,
|
|
'bannerImage': bannerImage,
|
|
|
|
// 🔹 ADDED
|
|
'cityIconPath': cityIconPath,
|
|
'icon': icon?.toJson(),
|
|
};
|
|
}
|
|
|
|
// 🔹 EXISTING METHODS (UNCHANGED)
|
|
String getImageUrl() {
|
|
if (bannerImage.isEmpty || !bannerImage.startsWith('http')) {
|
|
return 'assets/images/card_banner.png';
|
|
}
|
|
return bannerImage;
|
|
}
|
|
|
|
bool isNetworkImage() {
|
|
return bannerImage.isNotEmpty && bannerImage.startsWith('http');
|
|
}
|
|
}
|
|
|
|
// 🔹 NEW MODEL (REQUIRED FOR icon.svg)
|
|
class CityIcon {
|
|
final String svg;
|
|
|
|
CityIcon({required this.svg});
|
|
|
|
factory CityIcon.fromJson(Map<String, dynamic> json) {
|
|
return CityIcon(
|
|
svg: json['svg'] as String? ?? '',
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'svg': svg,
|
|
};
|
|
}
|
|
} |