import 'package:shared_preferences/shared_preferences.dart'; import 'country_code_source.dart'; /// Liest/schreibt den zuletzt erfolgreich ermittelten ISO-Ländercode aus /// `shared_preferences` (`docs/plan.md`, Abschnitt 6, letzter Fallback vor /// `countryUnknown`). class CachedCountryCodeSource implements CountryCodeCache { const CachedCountryCodeSource(); static const _key = 'last_known_country_code'; @override Future resolve() async { try { final prefs = await SharedPreferences.getInstance(); final code = prefs.getString(_key)?.trim(); if (code == null || code.isEmpty) return null; return code.toUpperCase(); } catch (_) { return null; } } /// Speichert [isoCode] als zuletzt bekannten Ländercode. /// /// Wird von [LocationService] nach jeder erfolgreichen Ermittlung über /// SIM oder GPS aufgerufen. Best effort: Schreibfehler werden verschluckt, /// damit ein kaputter Cache die eigentliche Ländererkennung nicht /// beeinflusst. @override Future save(String isoCode) async { try { final prefs = await SharedPreferences.getInstance(); await prefs.setString(_key, isoCode.toUpperCase()); } catch (_) { // Best effort, siehe Doc-Kommentar oben. } } }