fetchCountries method
Fetch country data from the source Returns null if fetch fails (silent fallback)
Implementation
@override
Future<Map<String, Country>?> fetchCountries() async {
try {
final response = await http
.get(Uri.parse(apiUrl), headers: headers)
.timeout(timeout);
if (response.statusCode == 200) {
final List<dynamic> jsonList = json.decode(response.body);
final Map<String, Country> countries = {};
for (var item in jsonList) {
try {
final country = Country.fromJson(item as Map<String, dynamic>);
countries[country.code] = country;
} catch (e) {
// Skip malformed entries
print('Warning: Skipping malformed country entry: $e');
}
}
return countries.isNotEmpty ? countries : null;
}
print('API returned status code: ${response.statusCode}');
return null;
} catch (e) {
// Silent fallback - API failure should not break the app
print('Country API fetch failed: $e');
return null;
}
}