login_controller.dart 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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.isEmpty || password.isEmpty){
  22. controllers.global.handleApiError(Exception("账号密码不能为空"));
  23. return;
  24. }
  25. isLoading.value = true;
  26. loginModes.value = await ApiService().login(kLogin,data: {"email":username,"password":password});
  27. if(loginModes.value.accessToken != null){
  28. await SharedPreferencesUtil().setString("token", loginModes.value.accessToken.toString());
  29. var userModes = LocalUser(email: username,password: password,accessToken: loginModes.value.accessToken.toString());
  30. await SharedPreferencesUtil().setString("localUser", JsonMapper.serialize(userModes));
  31. }
  32. Get.offNamed(Routes.HOME,arguments: loginModes.value);
  33. } catch (e) {
  34. controllers.global.handleApiError(e);
  35. } finally {
  36. isLoading.value = false;
  37. }
  38. }
  39. Future<void> fetchRegLogin(String username, String password) async {
  40. try {
  41. if(username.isEmpty || password.isEmpty){
  42. controllers.global.handleApiError(Exception("账号密码不能为空"));
  43. return;
  44. }
  45. isLoading.value = true;
  46. loginModes.value = await ApiService().reg(KReg,data: {"email":username,"password":password});
  47. if(loginModes.value.accessToken != null){
  48. await SharedPreferencesUtil().setString("token", loginModes.value.accessToken.toString());
  49. var userModes = LocalUser(email: username,password: password,accessToken: loginModes.value.accessToken.toString());
  50. await SharedPreferencesUtil().setString("localUser", JsonMapper.serialize(userModes));
  51. }
  52. Get.offNamed(Routes.HOME,arguments: loginModes.value);
  53. } catch (e) {
  54. controllers.global.handleApiError(e);
  55. } finally {
  56. isLoading.value = false;
  57. }
  58. }
  59. Future<void> fetchLocalUser() async {
  60. try {
  61. String? data = await SharedPreferencesUtil().getString("localUser");
  62. if(data != null){
  63. localUsers.value = JsonMapper.deserialize<LocalUser>(data)!;
  64. LogHelper().d(localUsers.value.email);
  65. }
  66. } catch (e) {
  67. controllers.global.handleApiError(e);
  68. } finally {
  69. isLoading.value = false;
  70. }
  71. }
  72. Future<void> fetchSysConfig() async {
  73. try {
  74. String? data = await SharedPreferencesUtil().getString("sysconfig");
  75. if(data != null){
  76. sysConfig.value =JsonMapper.deserialize<SysConfig>(data)!;
  77. }
  78. } catch (e) {
  79. controllers.global.handleApiError(e);
  80. } finally {
  81. }
  82. }
  83. @override
  84. void onInit() {
  85. super.onInit();
  86. fetchLocalUser();
  87. fetchSysConfig();
  88. }
  89. @override
  90. void onReady() {
  91. super.onReady();
  92. }
  93. @override
  94. void onClose() {
  95. super.onClose();
  96. }
  97. void increment() => count.value++;
  98. String username() => localUsers.value.email.toString();
  99. String password() => localUsers.value.password.toString();
  100. String accToken() => localUsers.value.accessToken.toString();
  101. }