getProvincesByRegion static method
Get provinces by region subcode
Implementation
static Future<List<Map<String, dynamic>>> getProvincesByRegion({
required String regionSubCode,
}) async {
await AddressData.loadData();
final normalizedRegionSubCode = _sanitizeRegionValue(regionSubCode);
final filteredProvinces = AddressData.provinces?.where((p) {
final effectiveRegionSubCode =
_getEffectiveRegionSubCode(Map<String, dynamic>.from(p));
return normalizedRegionSubCode != null &&
effectiveRegionSubCode == normalizedRegionSubCode;
}).toList() ??
[];
// Get distinct provinces by provinceCode
final distinctProvinces = <String, Map<String, dynamic>>{};
for (var province in filteredProvinces) {
final code = province['provinceCode'].toString();
if (!distinctProvinces.containsKey(code)) {
distinctProvinces[code] = {
'provinceCode': province['provinceCode'],
'provinceName': province['provinceName'],
'regionCode': province['regionCode'],
'regionSubCode':
_getEffectiveRegionSubCode(Map<String, dynamic>.from(province)),
};
}
}
return distinctProvinces.values.toList()
..sort((a, b) =>
a['provinceName'].toString().compareTo(b['provinceName'].toString()));
}