marco.pms.mobile/lib/controller/auth/login_controller.dart

72 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:maxdash/helpers/services/auth_service.dart';
import 'package:maxdash/helpers/widgets/my_form_validator.dart';
class LoginController extends GetxController {
MyFormValidator basicValidator = MyFormValidator();
bool showPassword = false;
@override
void onInit() {
basicValidator.addField('username', required: true, label: "Username", controller: TextEditingController());
basicValidator.addField('password', required: true, label: "Password", controller: TextEditingController());
super.onInit();
}
void onChangeShowPassword() {
showPassword = !showPassword;
update();
}
void goToForgotPassword() {
Get.toNamed('/auth/forgot_password');
}
void gotoRegister() {
Get.offAndToNamed('/auth/register_account');
}
Future<void> onLogin() async {
if (basicValidator.validateForm()) {
final data = basicValidator.getData();
// Log the data being sent
print('Sending login request with data: $data');
// Show a loading dialog
Get.dialog(
Center(child: CircularProgressIndicator()),
barrierDismissible: false,
);
try {
// Call the AuthService to perform the login
final errors = await AuthService.loginUser(data);
print('Login errors: $errors');
// Close the loading dialog
Get.back();
if (errors != null) {
// Display errors if login fails
print('Login failed with errors: $errors');
basicValidator.addErrors(errors);
basicValidator.validateForm();
basicValidator.clearErrors();
} else {
// Navigate to the home screen on successful login
print('Login successful. Navigating to home...');
Get.offAllNamed('/home');
}
} catch (e) {
// Close the loading dialog in case of an exception
Get.back();
// Show a generic error message
print('Unexpected error: $e');
Get.snackbar('Error', 'An unexpected error occurred. Please try again.');
}
}
}
}