add econtrol gasstation view and logic
This commit is contained in:
83
lib/controller/gasstations_controller.dart
Normal file
83
lib/controller/gasstations_controller.dart
Normal 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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user