Files
rootandClaude Sonnet 5 e3aa088bc2 Notrufnummern-Datenbasis, Ländererkennung, State-Management und Lokalisierung (AP1-AP7)
Implementiert den kompletten Kern-Flow der Emergency App gemäß docs/plan.md:
- Notrufnummern-Datenbasis für 199 Länder + Modelle/Repository (AP1)
- DialerService für tel:-Notrufe ohne Auto-Dial (AP2)
- Statisches UI mit Panik-Button-Fallback (AP3)
- Priorisierte Ländererkennung: SIM/Netz -> GPS/Geocoding -> Cache (AP4)
- EmergencyProvider verdrahtet Repository/LocationService mit der UI (AP5)
- Manuelle Länderauswahl als Fallback samt eigener Priorität (AP6)
- UI-Lokalisierung (de/en/fr/es), an erkanntes Land gekoppelt (AP7)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 11:29:38 +02:00

36 lines
1.6 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/// Gemeinsame Schnittstelle für Ländercode-Ermittlungsquellen
/// (`docs/plan.md`, Abschnitt 6 + 8, AP4).
///
/// Implementierungen liefern best-effort einen ISO 3166-1 alpha-2
/// Ländercode oder `null`, wenn sie ihn nicht ermitteln konnten. Sie dürfen
/// dabei **niemals** werfen Fehler (fehlende Berechtigung, kein Netz,
/// Plugin-Fehler auf Emulatoren o. Ä.) werden intern abgefangen und als
/// `null` codiert. Das erlaubt [LocationService], die Kette gleichförmig zu
/// orchestrieren, ohne pro Quelle try/catch zu benötigen.
abstract class CountryCodeSource {
Future<String?> resolve();
}
/// Erweiterung von [CountryCodeSource] um eine Schreibmöglichkeit.
///
/// Wird von der Cache-Quelle implementiert: Sie liefert nicht nur den
/// zuletzt bekannten Ländercode zurück ([resolve]), sondern erlaubt auch,
/// einen neu ermittelten Code zu speichern ([save]) siehe
/// `CachedCountryCodeSource`.
abstract class CountryCodeCache implements CountryCodeSource {
/// Speichert [isoCode] als zuletzt bekannten Ländercode (best effort).
Future<void> save(String isoCode);
}
/// Erweiterung von [CountryCodeSource] um die manuelle Länderauswahl
/// (`docs/plan.md`, Abschnitt 8, AP6).
///
/// Im Gegensatz zu [CountryCodeCache] erlaubt [save] hier explizit `null`,
/// damit der Nutzer die manuelle Auswahl wieder löschen und zur
/// automatischen Ermittlungskette (SIM → GPS → Cache) zurückkehren kann.
abstract class ManualCountryCodeStore implements CountryCodeSource {
/// Setzt die manuelle Länderauswahl. `null` löscht eine zuvor gesetzte
/// Auswahl wieder (best effort).
Future<void> save(String? isoCode);
}