add econtrol gasstation view and logic

This commit is contained in:
2026-02-19 14:49:39 +01:00
parent ff440ac48c
commit 8349e2b496
8 changed files with 497 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
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 = <EControlModel>[].obs;
@override
void onInit() {
_loadStationInfosList();
super.onInit();
}
@override
void onReady() {}
@override
void onClose() {}
Future<void> _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();
}
}

View File

@@ -1,3 +1,4 @@
import 'package:flutter_tank_web_app/pages/gasstations_view.dart';
import 'package:get/get.dart';
import '../models/tank_model.dart';
@@ -105,4 +106,8 @@ class HomeController extends GetxController {
void goToGraphPage() {
Get.toNamed(GraphPage.namedRoute, arguments: listTankModel);
}
void goToGasStations() {
Get.toNamed(GasstationsPage.namedRoute);
}
}