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 filteredProvinces = AddressData.provinces?.where((p) {
        final subCode = p['regionSubCode']?.toString().trim();
        return subCode != null &&
            subCode.isNotEmpty &&
            subCode.toUpperCase() == regionSubCode.toUpperCase() &&
            subCode != 'NULL';
      }).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': province['regionSubCode'],
      };
    }
  }

  return distinctProvinces.values.toList()
    ..sort((a, b) =>
        a['provinceName'].toString().compareTo(b['provinceName'].toString()));
}