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>
This commit is contained in:
root
2026-07-24 11:29:38 +02:00
co-authored by Claude Sonnet 5
parent 40e95cc495
commit e3aa088bc2
54 changed files with 7550 additions and 145 deletions
+40
View File
@@ -0,0 +1,40 @@
import 'emergency_type.dart';
/// Eine einzelne Notrufnummer eines Landes (z. B. Polizei, Feuerwehr).
class EmergencyNumber {
const EmergencyNumber({
required this.type,
required this.number,
required this.labelDe,
required this.labelEn,
});
final EmergencyType type;
final String number;
final String labelDe;
final String labelEn;
factory EmergencyNumber.fromJson(Map<String, dynamic> json) {
return EmergencyNumber(
type: EmergencyType.fromJson(json['type'] as String),
number: json['number'] as String,
labelDe: json['label_de'] as String,
labelEn: json['label_en'] as String,
);
}
@override
String toString() => 'EmergencyNumber(type: $type, number: $number)';
@override
bool operator ==(Object other) =>
identical(this, other) ||
(other is EmergencyNumber &&
other.type == type &&
other.number == number &&
other.labelDe == labelDe &&
other.labelEn == labelEn);
@override
int get hashCode => Object.hash(type, number, labelDe, labelEn);
}