77 lines
2.2 KiB
Dart

// map_dialog_view.dart
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:url_launcher/url_launcher.dart';
class MapDialogView extends StatelessWidget {
final double latitude;
final double longitude;
const MapDialogView({
super.key,
required this.latitude,
required this.longitude,
});
// Funktion zum Öffnen der Karten-URL
void _openMap() async {
String url = '';
final coords = '$latitude,$longitude';
if (Platform.isAndroid) {
// Android: Startet die Google Maps Navigation
url =
'https://www.google.com/maps/dir/?api=1&destination=$coords'; // mode=d für Fahren
} else if (Platform.isIOS) {
// iOS: Startet die Apple Maps Navigation
url =
'https://maps.apple.com/?daddr=$coords&dirflg=d'; // daddr für destination, dirflg=d für driving
} else {
// Fallback-URL für die Google Maps Website mit Wegbeschreibung
url = 'https://www.google.com/maps/dir/?api=1&destination=$coords';
}
// Hier die URL-Logik einfügen, die Sie bereits kennen
//final url = 'http://googleusercontent.com/maps.google.com/8';
final uri = Uri.parse(url);
if (await canLaunchUrl(uri)) {
await launchUrl(uri);
} else {
// Eine Snackbar oder ein Dialog, um den Fehler zu melden
print('Fehler: Konnte Karten-App nicht öffnen.');
}
Get.back();
}
@override
Widget build(BuildContext context) {
return AlertDialog(
title: const Text('Karte öffnen'),
content: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment:
CrossAxisAlignment.start, // Passt die Höhe an den Inhalt an
children: [
Text('Koordinaten'),
Text('Latitude: $latitude'),
Text('Longitude: $longitude'),
const SizedBox(height: 20),
ElevatedButton(
onPressed: _openMap, // Ruft die Methode zum Öffnen der Karte auf
child: const Text('Karten-App öffnen'),
),
],
),
actions: [
TextButton(
onPressed: () => Navigator.of(context).pop(), // Schließt den Dialog
child: const Text('Schließen'),
),
],
);
}
}