mod input and routes

This commit is contained in:
atseirjo
2025-10-27 10:43:28 +01:00
parent ee655328e6
commit 059b4773f4
7 changed files with 195 additions and 58 deletions

View File

@@ -1,17 +1,51 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:appwrite/models.dart' as user_models;
import '../controllers/login_controller.dart';
import '../controllers/geolocation_controller.dart';
import '../models/ptv_logistic_model.dart';
import '../routes/app_routes.dart';
class InputController extends GetxController {
final GeolocationController geoCtrl = Get.put(GeolocationController());
final LoginController loginCtrl = Get.put(LoginController());
final _ptvModel = Rxn<PTVModel>();
final _user = (Get.arguments as user_models.User).obs;
final formKey = GlobalKey<FormState>();
@override
void onInit() {
PTVModel? get ptvModel => _ptvModel.value;
user_models.User? get currentUser => _user.value;
@override
void onInit() {
_getLocation();
super.onInit();
}
}
@override
void onReady() {}
@override
void onReady() {}
@override
void onClose() {}
@override
void onClose() {
geoCtrl.onClose();
loginCtrl.onClose();
super.onClose();
}
void _getLocation() async {
await geoCtrl.getCurrentPosition().then(
(_) => {_ptvModel.value = geoCtrl.ptvModel},
);
update();
}
void goToListPage() {
//AppNavigation.goToListPage
}
void logout() {
loginCtrl.logout();
//AppNavigation.toLogin();
AppNavigation.offAllToLogin();
}
}

View File

@@ -1,16 +1,18 @@
import 'package:appwrite/appwrite.dart' as account_models;
import 'package:appwrite/models.dart' as user_models;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:appwrite/appwrite.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter/foundation.dart';
import '../routes/app_routes.dart';
class LoginController extends GetxController {
final _account = Rxn<account_models.Account>();
final mailController = TextEditingController();
final passwordController = TextEditingController();
final nameController = TextEditingController();
late TextEditingController mailController;
late TextEditingController passwordController;
late TextEditingController nameController;
final _endpoint = dotenv.env['APPWRITE_ENDPOINT_URL'] ?? '';
final _projectId = dotenv.env['APPWRITE_PROJECT_ID'] ?? '';
final bool _selfSigned =
@@ -24,6 +26,11 @@ class LoginController extends GetxController {
@override
void onInit() {
// Initialisiere TextEditingController
mailController = TextEditingController();
passwordController = TextEditingController();
nameController = TextEditingController();
// Initialisiere Client
Client client = Client().setEndpoint(_endpoint).setProject(_projectId);
// Optional: Unsichere/self-signed Zertifikate im Dev zulassen (nicht im Web wirksam)
if (!kIsWeb && _selfSigned) {
@@ -62,6 +69,7 @@ class LoginController extends GetxController {
}
Future<void> login() async {
logout();
try {
var result = await _account.value!.createEmailPasswordSession(
email: mailController.text,
@@ -72,9 +80,10 @@ class LoginController extends GetxController {
final user = await _account.value!.get();
_logedInUser.value = user;
clearFields();
goToInput(user);
Get.snackbar(
'Erfolg',
'Anmeldung erfolgreich',
'Anmeldung erfolgreich ${user.name}, ID: ${user.$id}',
snackPosition: SnackPosition.BOTTOM,
);
} on AppwriteException catch (e) {
@@ -97,7 +106,7 @@ class LoginController extends GetxController {
}
}
clearFields(){
clearFields() {
mailController.clear();
passwordController.clear();
nameController.clear();
@@ -133,8 +142,14 @@ class LoginController extends GetxController {
}
Future<void> logout() async {
await _account.value!.deleteSession(sessionId: 'current');
await _account.value!.deleteSession(sessionId: 'current');
_logedInUser.value = null;
Get.snackbar(
'Erfolg',
'Logout erfolgreich',
snackPosition: SnackPosition.BOTTOM,
backgroundColor: Colors.red.shade500,
);
}
@override
@@ -144,5 +159,8 @@ class LoginController extends GetxController {
nameController.dispose();
super.onClose();
}
}
void goToInput(Object args) {
AppNavigation.toInputPageWithArgs(args);
}
}