getProvincesByRegion static method

Future<List<Map<String, dynamic>>> getProvincesByRegion({
  1. required String regionSubCode,
})

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()));
}