import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; import 'package:get/get.dart'; import '../models/econtrol_model.dart'; import '../services/econtrol_service.dart'; class GasstationsController extends GetxController { final isLoading = false.obs; final isLoadingLocation = false.obs; final eControlData = [].obs; @override void onInit() { _loadStationInfosList(); super.onInit(); } @override void onReady() {} @override void onClose() {} Future _loadStationInfosList() async { isLoading.value = true; bool serviceEnabled; if (eControlData.isNotEmpty) { eControlData.clear(); } final eControlService = EControlService(); LocationPermission permission; try { isLoadingLocation.value = true; // 1. Prüfen, ob Standortdienste aktiviert sind serviceEnabled = await Geolocator.isLocationServiceEnabled(); if (!serviceEnabled) { return Future.error('Standortdienste sind deaktiviert.'); } // 2. Berechtigungen prüfen permission = await Geolocator.checkPermission(); if (permission == LocationPermission.denied) { permission = await Geolocator.requestPermission(); if (permission == LocationPermission.denied) { return Future.error('Berechtigung verweigert.'); } } // 3. Position abrufen Position position = await Geolocator.getCurrentPosition( locationSettings: const LocationSettings( accuracy: LocationAccuracy.high, ), ); // 4. Standort über Backend-Proxy abrufen var lat = position.latitude; var lon = position.longitude; // Simulate fetching data from an API or database await eControlService.getEControlData( lat, lon, 'DIE', ); eControlData.addAll(eControlService.eControlData); } catch (e) { Get.snackbar( "Fehler", "Standort konnte nicht abgerufen werden: $e", snackPosition: SnackPosition.BOTTOM, backgroundColor: Colors.red[100], colorText: Colors.red[900], ); print("Fehler beim Abrufen des Standorts: $e"); } finally { isLoadingLocation.value = false; } isLoading.value = false; update(); } }