import 'package:firebase_database/firebase_database.dart'; import 'package:get/get.dart'; import 'package:intl/intl.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:url_launcher/url_launcher.dart'; class MapsController extends GetxController { final lat = 0.0.obs; final lng = 0.0.obs; final lastUpdate = ''.obs; final database = FirebaseDatabase.instance.ref(); // Tambahkan Rx untuk GoogleMapController agar bisa dipakai di controller final mapController = Rx(null); @override void onInit() { super.onInit(); fetchLocation(); } void fetchLocation() { database.child('location').onValue.listen((event) async { final data = event.snapshot.value as Map; lat.value = double.parse(data['lat'].toString()); lng.value = double.parse(data['lon'].toString()); // Jika controller peta sudah ada, pindahkan kamera ke lokasi baru final controller = mapController.value; if (controller != null) { controller.animateCamera( CameraUpdate.newLatLng( LatLng(lat.value, lng.value), ), ); } // Update waktu lastUpdate final now = DateTime.now(); final formatted = DateFormat('dd MMM yyyy HH:mm:ss').format(now); lastUpdate.value = formatted; }); } Future openGoogleMaps(double lat, double lon) async { final url = 'https://www.google.com/maps/search/?api=1&query=$lat,$lon'; final uri = Uri.parse(url); if (await canLaunchUrl(uri)) { final success = await launchUrl( uri, mode: LaunchMode.externalApplication, ); if (!success) { Get.snackbar('Error', 'Gagal membuka Google Maps'); } } else { Get.snackbar('Error', 'Aplikasi Maps tidak ditemukan'); } } }