import 'package:get/get.dart'; import 'package:flutter/material.dart'; import 'package:get_storage/get_storage.dart'; import '../helper/constants.dart'; enum MainView { dashboard, traun, sarleinsbach, lannach, settings } class HomeController extends GetxController { // Der Key, mit dem wir das Scaffold von hier aus steuern final GlobalKey scaffoldKey = GlobalKey(); final boxSettings = GetStorage(); final currentView = MainView.dashboard.obs; //--------------Settings View--------------------------- final askiUserController = TextEditingController().obs; final askiPasswordController = TextEditingController().obs; final loginUrlController = TextEditingController().obs; final powerUrlController = TextEditingController().obs; final pvTraunDeviceController = TextEditingController().obs; final pvTraunDeviceMeterIdPVController = TextEditingController().obs; final pvTraunDeviceMeterIdImportController = TextEditingController().obs; final pvSarleinsbachDeviceController = TextEditingController().obs; final pvSarleinsbachDeviceMeterIdPV01Controller = TextEditingController().obs; final pvSarleinsbachDeviceMeterIdPV02Controller = TextEditingController().obs; final pvSarleinsbachDeviceMeterIdPV03Controller = TextEditingController().obs; final pvSarleinsbachDeviceMeterIdImportController = TextEditingController().obs; final pvLannachDeviceController = TextEditingController().obs; final pvLannachDeviceMeterIdPVController = TextEditingController().obs; final pvLannachDeviceMeterIdImportController = TextEditingController().obs; void saveSettings() { String askiUser = askiUserController.value.text; String askiPassword = askiPasswordController.value.text; String loginUrl = loginUrlController.value.text; String powerUrl = powerUrlController.value.text; //traun String pvTraunDevice = pvTraunDeviceController.value.text; int pvTraunDeviceMeterIdPV = int.parse(pvTraunDeviceMeterIdPVController.value.text); int pvTraunDeviceMeterIdImport = int.parse(pvTraunDeviceMeterIdImportController.value.text); //sarleinsbach String pvSarleinsbachDevice = pvSarleinsbachDeviceController.value.text; int pvSarleinsbachDeviceMeterIdPV01 = int.parse(pvSarleinsbachDeviceMeterIdPV01Controller.value.text); int pvSarleinsbachDeviceMeterIdPV02 = int.parse(pvSarleinsbachDeviceMeterIdPV02Controller.value.text); int pvSarleinsbachDeviceMeterIdPV03 = int.parse(pvSarleinsbachDeviceMeterIdPV03Controller.value.text); int pvSarleinsbachDeviceMeterIdImport = int.parse(pvSarleinsbachDeviceMeterIdImportController.value.text); //lannach String pvLannachDevice = pvLannachDeviceController.value.text; int pvLannachDeviceMeterIdPV = int.parse(pvLannachDeviceMeterIdPVController.value.text); int pvLannachDeviceMeterIdImport = int.parse(pvLannachDeviceMeterIdImportController.value.text); boxSettings.write('askiUser', askiUser); boxSettings.write('askiPassword', askiPassword); boxSettings.write('loginUrl', loginUrl); boxSettings.write('powerUrl', powerUrl); boxSettings.write('pvTraunDevice', pvTraunDevice); boxSettings.write('pvTraunDeviceMeterIdPV', pvTraunDeviceMeterIdPV); boxSettings.write('pvTraunDeviceMeterIdImport', pvTraunDeviceMeterIdImport); boxSettings.write('pvSarleinsbachDevice', pvSarleinsbachDevice); boxSettings.write('pvSarleinsbachDeviceMeterIdPV01', pvSarleinsbachDeviceMeterIdPV01); boxSettings.write('pvSarleinsbachDeviceMeterIdPV02', pvSarleinsbachDeviceMeterIdPV02); boxSettings.write('pvSarleinsbachDeviceMeterIdPV03', pvSarleinsbachDeviceMeterIdPV03); boxSettings.write('pvSarleinsbachDeviceMeterIdImport', pvSarleinsbachDeviceMeterIdImport); boxSettings.write('pvLannachDevice', pvLannachDevice); boxSettings.write('pvLannachDeviceMeterIdPV', pvLannachDeviceMeterIdPV); boxSettings.write('pvLannachDeviceMeterIdImport', pvLannachDeviceMeterIdImport); kDisplaySnackBarGreen("Settings saved successfully!"); print('Einstellungen gespeichert:'); print('ASKI User: $askiUser'); print('ASKI Password: $askiPassword'); print('Login URL: $loginUrl'); print('Power URL: $powerUrl'); } //------------------------------------------------------ void changeView(MainView view) { currentView.value = view; } void toggleDrawer() { final ScaffoldState? state = scaffoldKey.currentState; if (state != null) { if (state.isDrawerOpen) { print("Schließe Drawer..."); state.closeDrawer(); // Wartet auf das Ende der Schließ-Animation print("Drawer geschlossen."); } else { print("Öffne Drawer..."); state.openDrawer(); // Wartet auf das Ende der Öffnen-Animation print("Drawer geöffnet."); } } } @override void onInit() { super.onInit(); _readStorageData(); } void _readStorageData() { bool hasAskiUser = boxSettings.hasData('askiUser'); if (hasAskiUser) { askiUserController.value.text = boxSettings.read('askiUser'); } bool hasAskiPassword = boxSettings.hasData('askiPassword'); if (hasAskiPassword) { askiPasswordController.value.text = boxSettings.read('askiPassword'); } bool hasLoginUrl = boxSettings.hasData('loginUrl'); if (hasLoginUrl) { loginUrlController.value.text = boxSettings.read('loginUrl'); } bool hasPowerUrl = boxSettings.hasData('powerUrl'); if (hasPowerUrl) { powerUrlController.value.text = boxSettings.read('powerUrl'); } } @override void onClose() { askiUserController.close(); askiPasswordController.close(); loginUrlController.close(); powerUrlController.close(); pvTraunDeviceController.close(); pvTraunDeviceMeterIdPVController.close(); pvTraunDeviceMeterIdImportController.close(); pvSarleinsbachDeviceController.close(); pvSarleinsbachDeviceMeterIdPV01Controller.close(); pvSarleinsbachDeviceMeterIdPV02Controller.close(); pvSarleinsbachDeviceMeterIdPV03Controller.close(); pvSarleinsbachDeviceMeterIdImportController.close(); pvLannachDeviceController.close(); pvLannachDeviceMeterIdPVController.close(); pvLannachDeviceMeterIdImportController.close(); super.onClose(); } }