import 'dart:async'; import 'package:get/get.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import '../../network/user_api.dart'; import '../../pages/setting/match_spread_page.dart'; import '../global.dart'; class LeagueController extends GetxController { late UserApi _userApi; final phone = ''.obs; // 手机号输入 final phoneNumber = ''.obs; // 验证码输入 final verificationCode = ''.obs; // 是否正在发送验证码 final isSendingCode = false.obs; // 倒计时秒数 final countdownSeconds = 0.obs; final agree = false.obs; @override void onInit() { super.onInit(); // 从全局依赖中获取UserApi _userApi = Get.find(); phone.value = GlobalData().userData!.phone!; } // 获取验证码 Future getVerificationCode() async { if (countdownSeconds.value > 0) { return; } // 验证手机号格式 if (phoneNumber.value.isEmpty || phoneNumber.value.length != 11) { SmartDialog.showToast('请输入正确的手机号'); return; } isSendingCode.value = true; try { // 构建请求参数 final params = { 'purpose': 2, // 红娘申请 'verifiableAccount': phoneNumber.value, 'verifiableAccountType': 1, // 手机 }; // 调用UserApi中的验证码接口 final response = await _userApi.getVerificationCode(params); // 处理响应 if (response.data.isSuccess) { // 生产环境移除打印,可考虑使用正式的日志框架 SmartDialog.showToast('验证码发送成功'); // 开始倒计时 countdownSeconds.value = 60; startCountdown(); } else { SmartDialog.showToast(response.data.message); } } catch (e) { SmartDialog.showToast('网络请求失败,请重试'); } finally { isSendingCode.value = false; } } // 开始倒计时 void startCountdown() { Future.delayed(const Duration(seconds: 1), () { if (countdownSeconds.value > 0) { countdownSeconds.value--; startCountdown(); } else { isSendingCode.value = false; } }); } Future submitInfo() async { if(isSendingCode.value){ return; } if (phoneNumber.value.isEmpty) { SmartDialog.showToast('请输入手机号'); return; } if (verificationCode.value.isEmpty) { SmartDialog.showToast('请输入验证码'); return; } isSendingCode.value = true; try { // 调用登录接口 SmartDialog.showLoading(msg: '处理中'); final param = { 'phone': phoneNumber.value, 'captcha': verificationCode.value}; final response = await _userApi.updatePhone(param); // 处理响应 if (response.data.isSuccess) { SmartDialog.showToast('提交成功'); Get.off(() => MatchSpreadPage()); } else { SmartDialog.showToast(response.data.message); } } catch (e) { SmartDialog.showToast('网络请求失败,请检查网络连接'); } finally { SmartDialog.dismiss(); isSendingCode.value = true; } } }