login_controller.dart 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import 'package:domain/entity/response/user_login_entity.dart';
  2. import 'package:domain/repository/auth_repository.dart';
  3. import 'package:get/get.dart';
  4. import 'package:plugin_basic/service/user_service.dart';
  5. import 'package:plugin_platform/engine/toast/toast_engine.dart';
  6. import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
  7. import 'package:router/componentRouter/component_router_service.dart';
  8. import 'package:shared/utils/log_utils.dart';
  9. import 'package:shared/utils/util.dart';
  10. import 'login_state.dart';
  11. class LoginController extends GetxController with DioCancelableMixin {
  12. final AuthRepository authRepository = Get.find();
  13. final LoginState state = LoginState();
  14. bool pwdVisibility = false; //是否明文展示密码
  15. String? codeErrorText; //表单的错误信息展示
  16. String? passwordErrorText;
  17. String? code; //待提交的表单数据
  18. String? password;
  19. // 切换隐藏密码框
  20. void switchPwdVisibility() {
  21. pwdVisibility = !pwdVisibility;
  22. update();
  23. }
  24. // 重置电话的错误文本
  25. void resetCodeErrorText() {
  26. codeErrorText = null;
  27. update();
  28. }
  29. /// 执行账号密码的普通登录
  30. void doInputLogin() {
  31. codeErrorText = null;
  32. passwordErrorText = null;
  33. update();
  34. var codeController = state.formData['code']!['controller'];
  35. var passwordController = state.formData['password']!['controller'];
  36. code = codeController.text;
  37. password = passwordController.text;
  38. Log.d('当前待提交的 code:$code password:$password');
  39. if (Utils.isEmpty(code)) {
  40. codeErrorText = "The login code cannot be empty!".tr;
  41. update();
  42. } else if (Utils.isEmpty(password)) {
  43. passwordErrorText = "The password cannot be empty!".tr;
  44. update();
  45. } else {
  46. //执行密码登录
  47. _request2LoginPassword();
  48. }
  49. }
  50. /// 请求接口执行登录
  51. void _request2LoginPassword() async {
  52. var result = await authRepository.userLogin(code, password, registerId: "", cancelToken: cancelToken);
  53. //处理数据
  54. if (result.isSuccess) {
  55. //保存Token,去首页
  56. _handleLoginSuccess(result.data!);
  57. } else {
  58. ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
  59. }
  60. }
  61. /// 登录成功的统一处理 - 去首页
  62. void _handleLoginSuccess(UserLoginEntity result) {
  63. //保存Token
  64. final token = result.token;
  65. UserService.to.setToken(token);
  66. //发送通知请求用户详情数据
  67. // bus.emit(AppConstant.eventProfile2Refresh, true);
  68. //使用SingleTask启动模式去首页
  69. ComponentRouterServices.jobService.startWithPopSignInSignOutPage();
  70. }
  71. @override
  72. void onReady() async {
  73. super.onReady();
  74. }
  75. }