getCountries method
ISO 3166-1 alpha-2 code to human-readable country name.
Implementation
Future<Map<String, String>> getCountries() async {
if (_countries != null) return _countries!;
final file = File('$_zoneinfoDir/iso3166.tab');
if (!await file.exists()) {
throw FileSystemException('tzdata not installed', file.path);
}
final result = <String, String>{};
for (final line in await file.readAsLines()) {
if (line.isEmpty || line.startsWith('#')) continue;
final parts = line.split('\t');
if (parts.length < 2) continue;
final code = parts[0].trim().toUpperCase();
final name = parts[1].trim();
if (code.isEmpty || name.isEmpty) continue;
result[code] = name;
}
return _countries = Map.unmodifiable(result);
}