login_controller.dart 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import 'dart:async';
  2. import 'dart:ui';
  3. import 'package:flutter/material.dart';
  4. import 'package:get/get.dart';
  5. import 'package:grpc/grpc.dart';
  6. import '../../utils.dart';
  7. class LoginController extends GetxController {
  8. final phone = "".obs;
  9. final password = "".obs;
  10. final codeRetryLeft = 0.seconds.obs;
  11. Timer? ticker;
  12. var isSignInEnable = true;
  13. final isAgreeContract = false.obs;
  14. @override
  15. void onInit() {
  16. super.onInit();
  17. ticker = Timer.periodic(1.seconds, (timer) {
  18. codeRetryLeft.value -= 1.seconds;
  19. });
  20. }
  21. void onGetCode() async {
  22. info("获取验证码");
  23. await tryApi(
  24. () async {
  25. // codeRetryLeft.value =
  26. // await ApiService.to.getSmsSendLeftTime(phone.value);
  27. // if (codeRetryLeft.value.inSeconds > 0) {
  28. // return;
  29. // }
  30. // await ApiService.to
  31. // .authSendCodeToPhone(phone.value, pb.SmsType.Login);
  32. // codeRetryLeft.value =
  33. // await ApiService.to.getSmsSendLeftTime(phone.value);
  34. info("获取验证码结束");
  35. },
  36. errTitle: '获取验证码失败',
  37. onError: (e) async{
  38. if (e.code == StatusCode.notFound) {
  39. Get.snackbar('用户未注册', "请先注册",
  40. isDismissible: true, duration: 3.seconds);
  41. return true;
  42. }
  43. return false;
  44. });
  45. }
  46. Future<void> onSignIn() async {
  47. // if (!isAgreeContract.value) {
  48. // Get.snackbar('请先', '阅读并同意协议');
  49. // return;
  50. // }
  51. if (!isSignInEnable) {
  52. return;
  53. }
  54. try {
  55. isSignInEnable = false;
  56. if (phone.value.isEmpty) {
  57. Get.snackbar('手机号错误', "请重新输入");
  58. return;
  59. }
  60. if (password.value.isEmpty) {
  61. Get.snackbar('验证码错误', "请重新输入");
  62. return;
  63. }
  64. final args = Get.arguments;
  65. await tryApi(
  66. () async {
  67. info("登录 ${phone.value} ${password.value}");
  68. // await ApiService.to.signIn(phone.value, password.value, '');
  69. //
  70. // if (Get.previousRoute == RouteName.signIn) {
  71. // Get.offAllNamed(RouteName.home);
  72. // } else {
  73. // Get.back(result: true, closeOverlays: true);
  74. // }
  75. final call = Get.arguments;
  76. info("登录成功");
  77. if(call is VoidCallback){
  78. call();
  79. }else{
  80. Get.back(result: true, closeOverlays: true);
  81. }
  82. },
  83. errTitle: '登录失败',
  84. onError: (e) async{
  85. switch (e.code) {
  86. case StatusCode.unauthenticated:
  87. Get.snackbar('登录失败', "验证码错误");
  88. return true;
  89. case StatusCode.notFound:
  90. Get.snackbar('用户未注册', "请先注册");
  91. return true;
  92. default:
  93. return false;
  94. }
  95. });
  96. } finally {
  97. isSignInEnable = true;
  98. }
  99. }
  100. @override
  101. void onClose() {
  102. ticker?.cancel();
  103. }
  104. }
  105. class LoginControllerMock extends LoginController {}