loadCountries method

Future<Map<String, Country>?> loadCountries()

Load countries from cache

Implementation

Future<Map<String, Country>?> loadCountries() async {
  try {
    final prefs = await SharedPreferences.getInstance();

    // Check if cache exists
    if (!prefs.containsKey(_cacheKey)) {
      return null;
    }

    // Check cache expiry
    final timestamp = prefs.getInt(_timestampKey);
    if (timestamp != null) {
      final cacheDate = DateTime.fromMillisecondsSinceEpoch(timestamp);
      final age = DateTime.now().difference(cacheDate);

      if (age > _cacheExpiry) {
        print('Cache expired (${age.inDays} days old)');
        await clearCache();
        return null;
      }
    }

    // Load and parse
    final jsonString = prefs.getString(_cacheKey);
    if (jsonString == null) return null;

    final List<dynamic> jsonList = json.decode(jsonString);
    final Map<String, Country> countries = {};

    for (var item in jsonList) {
      final country = Country.fromJson(item as Map<String, dynamic>);
      countries[country.code] = country;
    }

    return countries.isNotEmpty ? countries : null;
  } catch (e) {
    print('Failed to load countries from cache: $e');
    return null;
  }
}