83 lines
2.0 KiB
Dart
83 lines
2.0 KiB
Dart
import 'dart:async';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:getx_scaffold/getx_scaffold.dart';
|
|
import 'package:ln_jq_app/common/model/base_model.dart';
|
|
|
|
class LoginController extends GetxController with BaseControllerMixin {
|
|
@override
|
|
String get builderId => 'login';
|
|
|
|
LoginController();
|
|
|
|
// 控制输入框的 TextEditingController
|
|
final TextEditingController phoneController = TextEditingController();
|
|
final TextEditingController codeController = TextEditingController();
|
|
|
|
final TextEditingController stationIdController = TextEditingController();
|
|
final TextEditingController passwordController = TextEditingController();
|
|
|
|
|
|
// --- 倒计时逻辑 ---
|
|
final RxInt countdown = 0.obs;
|
|
Timer? _timer;
|
|
|
|
void startCountdown() async {
|
|
if (phoneController.text.isEmpty || !phoneController.text.isPhoneNumber) {
|
|
showToast("请输入正确的手机号");
|
|
return;
|
|
}
|
|
|
|
if (countdown.value > 0) return;
|
|
|
|
// 调用发送验证码接口
|
|
var responseData = await HttpService.to.post(
|
|
'appointment/login/sendCode',
|
|
data: {"mobile": phoneController.text},
|
|
);
|
|
|
|
if (responseData == null) {
|
|
showToast('验证码发送失败,请稍后重试');
|
|
return;
|
|
}
|
|
|
|
try {
|
|
var result = BaseModel.fromJson(responseData.data);
|
|
|
|
if (result.code != 0) {
|
|
showToast(result.error);
|
|
dismissLoading();
|
|
return;
|
|
}
|
|
|
|
showToast("验证码已发送");
|
|
|
|
countdown.value = 60;
|
|
_timer = Timer.periodic(const Duration(seconds: 1), (timer) {
|
|
if (countdown.value > 0) {
|
|
countdown.value--;
|
|
} else {
|
|
_timer?.cancel();
|
|
}
|
|
});
|
|
} catch (e) {
|
|
showToast('验证码服务异常,请稍后重试');
|
|
}
|
|
}
|
|
|
|
@override
|
|
void onInit() {
|
|
super.onInit();
|
|
}
|
|
|
|
@override
|
|
void onClose() {
|
|
_timer?.cancel();
|
|
phoneController.dispose();
|
|
codeController.dispose();
|
|
|
|
stationIdController.dispose();
|
|
passwordController.dispose();
|
|
super.onClose();
|
|
}
|
|
}
|