getAddress static method
Original method - Get complete address by codes
Implementation
static Future<Map<String, String?>> getAddress({
required String provinceCode,
required String municipalityCode,
required String barangayCode,
}) async {
await AddressData.loadData();
await AddressData.loadBarangayShard(provinceCode);
Map<String, dynamic>? barangay;
for (final candidate in AddressData.barangayRecordsForMunicipality(
provinceCode,
municipalityCode,
)) {
if (candidate['barangayCode'].toString() == barangayCode) {
barangay = candidate;
break;
}
}
if (barangay == null) {
return {
'regionCode': null,
'regionSubCode': null,
'provinceName': null,
'municipalityName': null,
'barangayName': null,
};
}
final regionCode = barangay['regionCode'].toString();
final province = _findProvinceByCode(provinceCode, regionCode: regionCode);
Map<String, dynamic>? municipality;
for (final candidate in AddressData.municipalities ?? const []) {
if (candidate['regionCode'].toString() == regionCode &&
candidate['provinceCode'].toString() == provinceCode &&
candidate['municipalityCode'].toString() == municipalityCode) {
municipality = candidate;
break;
}
}
return {
'regionCode': regionCode,
'regionSubCode':
_getEffectiveRegionSubCode(province) ?? barangay['regionSubCode'],
'provinceName': province?['provinceName'] ?? barangay['provinceName'],
'municipalityName':
municipality?['municipalityName'] ?? barangay['municipalityName'],
'barangayName': barangay['barangayName'],
};
}