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>
26 lines
830 B
Dart
26 lines
830 B
Dart
import 'package:url_launcher/url_launcher.dart';
|
||
|
||
/// Öffnet die native Telefon-App mit vorgewählter Nummer.
|
||
///
|
||
/// Löst bewusst **kein** Auto-Dial aus (siehe `docs/plan.md`, Abschnitt 2):
|
||
/// Der Nutzer bestätigt den Anruf selbst im Wähler. Wirft keine Exceptions –
|
||
/// wenn das `tel:`-Schema nicht geöffnet werden kann, liefert [call] `false`
|
||
/// zurück und überlässt der UI (AP3+), wie damit umgegangen wird.
|
||
class DialerService {
|
||
const DialerService();
|
||
|
||
/// Baut die `tel:`-URI für [number] und öffnet sie im Wähler.
|
||
///
|
||
/// Gibt `true` zurück, wenn der Wähler erfolgreich geöffnet wurde,
|
||
/// sonst `false`.
|
||
Future<bool> call(String number) async {
|
||
final uri = Uri(scheme: 'tel', path: number);
|
||
|
||
if (!await canLaunchUrl(uri)) {
|
||
return false;
|
||
}
|
||
|
||
return launchUrl(uri);
|
||
}
|
||
}
|