You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.1KB

  1. import 'package:bloc/bloc.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:get/get.dart';
  4. import '../../../../data/repository/repository.dart';
  5. import '../../../../utils/local_storage.dart';
  6. import '../../../../utils/validators.dart';
  7. import '../models/request_user.dart';
  8. import '../models/response_user.dart';
  9. part 'login_state.dart';
  10. class LoginCubit extends Cubit<LoginState> {
  11. LoginCubit() : super(LoginInitial());
  12. final formKey = GlobalKey<FormState>();
  13. final usernameCtl = TextEditingController();
  14. final passwordCtl = TextEditingController();
  15. final usernameFocus = FocusNode();
  16. final passwordFocus = FocusNode();
  17. final _repository = Repository();
  18. var isRemember = ValueNotifier(true);
  19. Future<void> loginWithCredential() async {
  20. // if (!formKey.currentState!.validate()) {
  21. // return;
  22. // }
  23. emit(LoginLoading());
  24. var userLoginRequest = RequestUser()
  25. ..username = usernameCtl.text
  26. ..password = passwordCtl.text;
  27. await _repository.login(
  28. (data) {
  29. handleLoginLogic(
  30. responseUser: data,
  31. username: usernameCtl.text,
  32. );
  33. },
  34. (error) {
  35. emit(LoginFailure('Tên đăng nhập hoặc mật khẩu không đúng'));
  36. },
  37. requestUser: userLoginRequest,
  38. );
  39. }
  40. Future<void> handleLoginLogic({
  41. required ResponseUser responseUser,
  42. required String username,
  43. }) async {
  44. try {
  45. LocalStorage.saveUserInfo(responseUser, username);
  46. } catch (_) {}
  47. emit(
  48. LoginSuccess(
  49. routeName: '',
  50. ),
  51. );
  52. }
  53. String? validateEmail(String value) {
  54. if (!Validators.stringNotNullOrEmpty(value)) {
  55. return 'Nhập email';
  56. }
  57. if (!Validators.isValidEmail(value)) {
  58. return 'Nhập email';
  59. }
  60. return null;
  61. }
  62. String? validatePassword(String value) {
  63. if (!Validators.stringNotNullOrEmpty(value)) {
  64. return 'Nhập mật khẩu';
  65. }
  66. return null;
  67. }
  68. void rememberMe(bool isRememberLogin) {
  69. isRemember.value = isRememberLogin;
  70. }
  71. void dispose() {
  72. usernameCtl.dispose();
  73. passwordCtl.dispose();
  74. usernameFocus.dispose();
  75. passwordFocus.dispose();
  76. }
  77. }