controller.dart 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import 'package:electronic_assistant/base/base_controller.dart';
  2. import 'package:electronic_assistant/data/repositories/account_repository.dart';
  3. import 'package:electronic_assistant/dialog/alert_dialog.dart';
  4. import 'package:electronic_assistant/utils/error_handler.dart';
  5. import 'package:electronic_assistant/utils/expand.dart';
  6. import 'package:electronic_assistant/utils/toast_util.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:get/get.dart';
  9. class LoginController extends BaseController {
  10. final phone = "".obs;
  11. final code = "".obs;
  12. final isAgree = false.obs;
  13. final FocusNode phoneFocusNode = FocusNode();
  14. @override
  15. void onReady() {
  16. super.onReady();
  17. phoneFocusNode.requestFocus();
  18. }
  19. void getUserCode() {
  20. if (phone.value.isEmpty) {
  21. ToastUtil.showToast("请输入手机号");
  22. return;
  23. }
  24. accountRepository.getVerificationCode(phone.value).then((data) {
  25. ToastUtil.showToast("验证码已发送");
  26. }).catchError((error) {
  27. ErrorHandler.toastError(error);
  28. });
  29. }
  30. void login() {
  31. FocusScope.of(Get.context!).requestFocus(FocusNode());
  32. if (phone.value.isEmpty) {
  33. ToastUtil.showToast("请输入手机号");
  34. return;
  35. }
  36. if (code.value.isEmpty) {
  37. ToastUtil.showToast("请输入验证码");
  38. return;
  39. }
  40. if (!isAgree.value) {
  41. EAAlertDialog.show(
  42. title: "隐私政策及权限说明",
  43. contentWidget: Wrap(
  44. children: [
  45. Text(
  46. "进入下一步前,请先阅读并同意小听的",
  47. textAlign: TextAlign.center,
  48. style: TextStyle(
  49. color: "#5F5F61".toColor(),
  50. fontSize: 14,
  51. decoration: TextDecoration.none,
  52. ),
  53. ),
  54. GestureDetector(
  55. onTap: () {},
  56. child: Text(
  57. "《隐私政策》",
  58. textAlign: TextAlign.center,
  59. style: TextStyle(
  60. color: "#5E8BFF".toColor(),
  61. fontSize: 14,
  62. decoration: TextDecoration.none,
  63. ),
  64. ),
  65. ),
  66. Text(
  67. "和",
  68. textAlign: TextAlign.center,
  69. style: TextStyle(
  70. color: "#5F5F61".toColor(),
  71. fontSize: 14,
  72. decoration: TextDecoration.none,
  73. ),
  74. ),
  75. GestureDetector(
  76. onTap: () {},
  77. child: Text(
  78. "《用户试用协议》",
  79. textAlign: TextAlign.center,
  80. style: TextStyle(
  81. color: "#5E8BFF".toColor(),
  82. fontSize: 14,
  83. decoration: TextDecoration.none,
  84. ),
  85. ),
  86. ),
  87. Text(
  88. "。",
  89. textAlign: TextAlign.center,
  90. style: TextStyle(
  91. color: "#5F5F61".toColor(),
  92. fontSize: 14,
  93. decoration: TextDecoration.none,
  94. ),
  95. ),
  96. ],
  97. ),
  98. cancelText: "不同意",
  99. confirmText: "同意并继续",
  100. cancelOnTap: () {
  101. EAAlertDialog.dismiss();
  102. },
  103. confirmOnTap: () {
  104. EAAlertDialog.dismiss();
  105. isAgree.value = true;
  106. login();
  107. },
  108. );
  109. return;
  110. }
  111. if (phone.value.isEmpty || code.value.isEmpty) {
  112. return;
  113. }
  114. accountRepository.login(phone.value, code.value).then((data) {
  115. ToastUtil.showToast("登录成功");
  116. Get.back(result: true);
  117. }).catchError((error) {
  118. ErrorHandler.toastError(error);
  119. });
  120. }
  121. void setPhone(String text) {
  122. phone.value = text;
  123. }
  124. void setCode(String text) {
  125. code.value = text;
  126. }
  127. }