/opt/canhelp/apps/mobile/lib/models
Edit: /opt/canhelp/apps/mobile/lib/models/location.dart (1431B)
class Location {
final String id;
final String slug;
final String nameEl;
final String nameEn;
final String nameRu;
final String? parentId;
final List
children;
Location({
required this.id,
required this.slug,
required this.nameEl,
required this.nameEn,
required this.nameRu,
this.parentId,
this.children = const [],
});
String nameFor(String locale) {
switch (locale) {
case 'el':
return nameEl.isNotEmpty ? nameEl : nameEn;
case 'ru':
return nameRu.isNotEmpty ? nameRu : nameEn;
default:
return nameEn.isNotEmpty ? nameEn : nameEl;
}
}
factory Location.fromJson(Map json) {
final rawChildren = json['children'] as List?;
// API may return { names: { el, en, ru } } or flat nameEl/nameEn/nameRu
final names = json['names'] as Map?;
return Location(
id: json['id'] as String,
slug: json['slug'] as String? ?? '',
nameEl: names?['el'] as String? ?? json['nameEl'] as String? ?? '',
nameEn: names?['en'] as String? ?? json['nameEn'] as String? ?? '',
nameRu: names?['ru'] as String? ?? json['nameRu'] as String? ?? '',
parentId: json['parentId'] as String?,
children:
rawChildren
?.map((e) => Location.fromJson(e as Map))
.toList() ??
[],
);
}
}