login_controller.dart 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import 'package:cpt_auth/modules/main/main_page.dart';
  2. import 'package:cpt_auth/modules/reset_psd/reset_psd_page.dart';
  3. import 'package:domain/entity/response/hotel_info_entity.dart';
  4. import 'package:domain/repository/auth_repository.dart';
  5. import 'package:get/get.dart';
  6. import 'package:plugin_basic/service/user_service.dart';
  7. import 'package:plugin_platform/engine/toast/toast_engine.dart';
  8. import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
  9. import 'package:router/componentRouter/component_router_service.dart';
  10. import 'package:shared/utils/log_utils.dart';
  11. import 'package:shared/utils/util.dart';
  12. import '../sign_up/sign_up_page.dart';
  13. import 'login_state.dart';
  14. class LoginController extends GetxController with DioCancelableMixin {
  15. final AuthRepository authRepository = Get.find();
  16. final LoginState state = LoginState();
  17. // 切换隐藏密码框
  18. void switchPwdVisibility() {
  19. state.pwdVisibility = !state.pwdVisibility;
  20. update();
  21. }
  22. // 重置电话的错误文本
  23. void resetCodeErrorText() {
  24. state.codeErrorText = null;
  25. update();
  26. }
  27. /// 执行账号密码的普通登录
  28. void doInputLogin() {
  29. state.codeErrorText = null;
  30. state.passwordErrorText = null;
  31. update();
  32. var codeController = state.formData['code']!['controller'];
  33. var passwordController = state.formData['password']!['controller'];
  34. state.code = codeController.text;
  35. state.password = passwordController.text;
  36. Log.d('当前待提交的 email:${state.code} password:${state.password}');
  37. if (Utils.isEmpty(state.code)) {
  38. state.codeErrorText = "The email cannot be empty!".tr;
  39. update();
  40. } else if (Utils.isEmpty(state.password)) {
  41. state.passwordErrorText = "The password cannot be empty!".tr;
  42. update();
  43. } else {
  44. //执行密码登录
  45. _request2LoginPassword();
  46. }
  47. }
  48. /// 请求接口执行登录
  49. void _request2LoginPassword() async {
  50. var result = await authRepository.userLogin(state.code, state.password, cancelToken: cancelToken);
  51. //处理数据
  52. if (result.isSuccess) {
  53. //保存Token,去首页
  54. _handleLoginSuccess(result.data!);
  55. } else {
  56. ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
  57. }
  58. }
  59. /// 登录成功的统一处理 - 去首页
  60. void _handleLoginSuccess(HotelInfoEntity result) {
  61. //保存Token
  62. final token = result.token;
  63. UserService.to.setToken(token);
  64. //去首页
  65. MainPage.startWithPopAll();
  66. }
  67. @override
  68. void onReady() async {
  69. super.onReady();
  70. }
  71. /// 跳转登录页面
  72. void gotoSignUpPage() {
  73. SignUpPage.startInstance();
  74. }
  75. }