getRegionNumbers static method
Returns the available PCIC regionNo values and any special region
options, such as 3A.
Implementation
static Future<List<Map<String, dynamic>>> getRegionNumbers() async {
await AddressData.loadData();
final regions = <String, Set<String>>{};
for (final province in AddressData.provinces ?? const []) {
final regionNo = _normalizeValue(province['RegionNo']);
if (regionNo == null) {
continue;
}
final provinceRecord = Map<String, dynamic>.from(province);
final regionOptions = regions.putIfAbsent(regionNo, () => {regionNo});
if (_getEffectiveRegionSubCode(provinceRecord) == '3A') {
regionOptions.add('3A');
}
}
final sortedRegions = regions.entries
.map((entry) => {
'regionNo': entry.key,
'regionOptions': [
entry.key,
...entry.value
.where((option) => option != entry.key)
.toList()
..sort(),
],
})
.toList();
sortedRegions.sort(
(a, b) => int.parse(a['regionNo'].toString()).compareTo(
int.parse(b['regionNo'].toString()),
),
);
return sortedRegions;
}