mod input and routes
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user