login_controller.dart 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import 'package:dart_json_mapper/dart_json_mapper.dart';
  2. import 'package:get/get.dart';
  3. import 'package:naiyouwl/app/common/constants.dart';
  4. import 'package:naiyouwl/app/controller/controllers.dart';
  5. import 'package:naiyouwl/app/data/model/LoginMode.dart';
  6. import 'package:naiyouwl/app/data/model/SysConfig.dart';
  7. import '../../../common/LogHelper.dart';
  8. import '../../../common/SharedPreferencesUtil.dart';
  9. import '../../../data/model/LocalUser.dart';
  10. import '../../../network/api_service.dart';
  11. import '../../../routes/app_pages.dart';
  12. class LoginController extends GetxController {
  13. final count = 0.obs;
  14. var isLoading = false.obs;
  15. var loginModes = LoginMode().obs;
  16. var localUsers = LocalUser().obs;
  17. var sysConfig = SysConfig().obs;
  18. var isReg = false.obs;
  19. Future<void> fetchLogin(String username, String password) async {
  20. try {
  21. if (username.trim().isEmpty || password.trim().isEmpty) {
  22. controllers.global.handleApiError(Exception("账号密码不能为空"));
  23. return;
  24. }
  25. isLoading.value = true;
  26. loginModes.value = await ApiService().login(
  27. kLogin,
  28. data: {
  29. "email": username.trim(),
  30. "password": password,
  31. }
  32. );
  33. final token = loginModes.value.accessToken;
  34. if (token != null) {
  35. await Future.wait([
  36. SharedPreferencesUtil().setString("token", token),
  37. SharedPreferencesUtil().setString(
  38. "localUser",
  39. JsonMapper.serialize(
  40. LocalUser(
  41. email: username.trim(),
  42. password: password,
  43. accessToken: token,
  44. )
  45. )
  46. ),
  47. ]);
  48. }
  49. Get.offNamed(Routes.HOME, arguments: loginModes.value);
  50. } catch (e) {
  51. controllers.global.handleApiError(e);
  52. } finally {
  53. isLoading.value = false;
  54. }
  55. }
  56. Future<void> fetchRegLogin(String username, String password) async {
  57. try {
  58. if(username.isEmpty || password.isEmpty){
  59. controllers.global.handleApiError(Exception("账号密码不能为空"));
  60. return;
  61. }
  62. isLoading.value = true;
  63. loginModes.value = await ApiService().reg(KReg,data: {"email":username,"password":password});
  64. if(loginModes.value.accessToken != null){
  65. await SharedPreferencesUtil().setString("token", loginModes.value.accessToken.toString());
  66. var userModes = LocalUser(email: username,password: password,accessToken: loginModes.value.accessToken.toString());
  67. await SharedPreferencesUtil().setString("localUser", JsonMapper.serialize(userModes));
  68. }
  69. Get.offNamed(Routes.HOME,arguments: loginModes.value);
  70. } catch (e) {
  71. controllers.global.handleApiError(e);
  72. } finally {
  73. isLoading.value = false;
  74. }
  75. }
  76. Future<void> fetchLocalUser() async {
  77. try {
  78. String? data = await SharedPreferencesUtil().getString("localUser");
  79. if(data != null){
  80. localUsers.value = JsonMapper.deserialize<LocalUser>(data)!;
  81. LogHelper().d(localUsers.value.email);
  82. }
  83. } catch (e) {
  84. controllers.global.handleApiError(e);
  85. } finally {
  86. isLoading.value = false;
  87. }
  88. }
  89. Future<void> fetchSysConfig() async {
  90. try {
  91. String? data = await SharedPreferencesUtil().getString("sysconfig");
  92. if(data != null){
  93. sysConfig.value =JsonMapper.deserialize<SysConfig>(data)!;
  94. }
  95. } catch (e) {
  96. controllers.global.handleApiError(e);
  97. } finally {
  98. }
  99. }
  100. @override
  101. void onInit() {
  102. super.onInit();
  103. fetchLocalUser();
  104. fetchSysConfig();
  105. }
  106. @override
  107. void onReady() {
  108. super.onReady();
  109. }
  110. @override
  111. void onClose() {
  112. super.onClose();
  113. }
  114. void increment() => count.value++;
  115. String username() => localUsers.value.email.toString();
  116. String password() => localUsers.value.password.toString();
  117. String accToken() => localUsers.value.accessToken.toString();
  118. }