login_controller.dart 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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/data/model/LoginMode.dart';
  5. import '../../../common/LogHelper.dart';
  6. import '../../../common/SharedPreferencesUtil.dart';
  7. import '../../../data/model/LocalUser.dart';
  8. import '../../../network/api_service.dart';
  9. import '../../../routes/app_pages.dart';
  10. class LoginController extends GetxController {
  11. final count = 0.obs;
  12. var isLoading = false.obs;
  13. var loginModes = LoginMode().obs;
  14. var localUsers = LocalUser().obs;
  15. var errorMsg = ''.obs;
  16. Future<void> fetchLogin(String username, String password) async {
  17. try {
  18. if(username.isEmpty || password.isEmpty){
  19. errorMsg.value = "账号密码不能为空";
  20. return;
  21. }
  22. isLoading.value = true;
  23. loginModes.value = await ApiService().login(kLogin,data: {"email":username,"password":password});
  24. if(loginModes.value.accessToken != null){
  25. await SharedPreferencesUtil().setString("token", loginModes.value.accessToken.toString());
  26. var userModes = LocalUser(email: username,password: password,accessToken: loginModes.value.accessToken.toString());
  27. await SharedPreferencesUtil().setString("localUser", JsonMapper.serialize(userModes));
  28. }
  29. Get.offNamed(Routes.HOME,arguments: loginModes.value);
  30. } catch (e) {
  31. errorMsg.value = e.toString();
  32. } finally {
  33. isLoading.value = false;
  34. }
  35. }
  36. Future<void> fetchRegLogin(String username, String password) async {
  37. try {
  38. if(username.isEmpty || password.isEmpty){
  39. errorMsg.value = "账号密码不能为空";
  40. return;
  41. }
  42. isLoading.value = true;
  43. loginModes.value = await ApiService().reg(KReg,data: {"email":username,"password":password});
  44. if(loginModes.value.accessToken != null){
  45. await SharedPreferencesUtil().setString("token", loginModes.value.accessToken.toString());
  46. var userModes = LocalUser(email: username,password: password,accessToken: loginModes.value.accessToken.toString());
  47. await SharedPreferencesUtil().setString("localUser", JsonMapper.serialize(userModes));
  48. }
  49. Get.offNamed(Routes.HOME,arguments: loginModes.value);
  50. } catch (e) {
  51. errorMsg.value = e.toString();
  52. } finally {
  53. isLoading.value = false;
  54. }
  55. }
  56. Future<void> fetchLocalUser() async {
  57. try {
  58. String? data = await SharedPreferencesUtil().getString("localUser");
  59. if(data != null){
  60. localUsers.value = JsonMapper.deserialize<LocalUser>(data)!;
  61. LogHelper().d(localUsers.value.email);
  62. }
  63. } catch (e) {
  64. errorMsg.value = e.toString();
  65. } finally {
  66. isLoading.value = false;
  67. }
  68. }
  69. @override
  70. void onInit() {
  71. super.onInit();
  72. fetchLocalUser();
  73. }
  74. @override
  75. void onReady() {
  76. super.onReady();
  77. }
  78. @override
  79. void onClose() {
  80. super.onClose();
  81. }
  82. void increment() => count.value++;
  83. String username() => localUsers.value.email.toString();
  84. String password() => localUsers.value.password.toString();
  85. String accToken() => localUsers.value.accessToken.toString();
  86. }