smartfarming-mobile/agrilink_vocpro/lib/features/auth/provider/auth_provider.dart

78 lines
2.0 KiB
Dart
Raw Normal View History

import 'package:agrilink_vocpro/core/state/result_state.dart';
import 'package:agrilink_vocpro/domain/service/app_service.dart';
import 'package:flutter/material.dart';
class AuthProvider extends ChangeNotifier {
TextEditingController emailController = TextEditingController();
TextEditingController passwordController = TextEditingController();
bool _isRememberMe = false;
bool get isRememberMe => _isRememberMe;
String errorMessage = '';
ResultState loginState = ResultState.initial;
void controllerClear() {
emailController.clear();
passwordController.clear();
notifyListeners();
}
void setRememberMe(bool value) {
_isRememberMe = value;
notifyListeners();
}
Future<void> login(context,
{required String email, required String password}) async {
loginState = ResultState.loading;
notifyListeners();
try {
final result = await AppService().login(
username: email,
password: password,
rememberMe: isRememberMe.toString(),
);
if (result.data != null) {
loginState = ResultState.hasData;
notifyListeners();
} else {
errorMessage = 'Login gagal, data tidak ditemukan';
loginState = ResultState.error;
notifyListeners();
}
} catch (e) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: const Text('Error'),
content: Text('$e'),
actions: [
TextButton(
child: const Text('OK'),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
loginState = ResultState.error;
notifyListeners();
}
}
bool validateInputs() {
if (emailController.text.isEmpty || passwordController.text.isEmpty) {
errorMessage = 'Email dan password tidak boleh kosong';
loginState = ResultState.error;
notifyListeners();
return false;
}
return true;
}
}