import 'dart:async'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:star_lock/appRouters.dart'; import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/blue/blue_manage.dart'; import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart'; import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/login/register/entity/SendValidationCodeEntity.dart'; import 'package:star_lock/tools/eventBusEventManage.dart'; import 'package:star_lock/tools/storage.dart'; import 'package:star_lock/tools/xs_jPhush.dart'; import '../../network/api_repository.dart'; import '../../tools/baseGetXController.dart'; import '../../tools/showTipView.dart'; import 'entity/checkIP_entity.dart'; import 'starLock_register_state.dart'; class StarLockRegisterLogic extends BaseGetXController { final StarLockRegisterState state = StarLockRegisterState(); late Timer _timer; void _startTimer() { _timer = Timer.periodic(1.seconds, (Timer timer) { if (state.currentSecond > 1) { state.currentSecond--; } else { _cancelTimer(); state.currentSecond = state.totalSeconds; } state.resetResend(); }); } void _cancelTimer() { _timer.cancel(); // _timer = null; } Future register() async { AppLog.log( 'state.pwd.value:${state.pwd.value} state.surePwd.value:${state.surePwd.value}'); if (state.pwd.value != state.surePwd.value) { showToast('密码不一致哦'.tr); return; } final LoginEntity entity = await ApiRepository.to.register( receiverType: state.isIphoneType.value == true ? 1 : 2, countryCode: int.parse(state.countryCode.value), account: state.phoneOrEmailStr.value, password: state.pwd.value, verificationCode: state.verificationCode.value, deviceInfo: state.deviceInfoMap.value); if (entity.errorCode!.codeIsSuccessful) { Storage.saveLoginData(entity.data); Storage.setBool(saveIsVip, entity.data!.isVip == 1); eventBus.fire(MineInfoChangeRefreshUI()); XSJPushProvider().bindDeviceID(); XSJPushProvider().initLocalNotification(isCancelLocalPush: false); Get.offNamedUntil(Routers.starLockMain, (Route route) => false); BlueManage().scanDevices.clear(); //清除设备缓存 } } Future sendValidationCode() async { final SendValidationCodeEntity entity = await ApiRepository.to.sendValidationCodeUnLogin( // state.countryCode.value, countryCode: state.countryCode.value.toString(), account: state.phoneOrEmailStr.value, channel: state.isIphoneType.value ? '1' : '2', codeType: '1', xWidth: state.xWidth.value.toString()); if (entity.errorCode!.codeIsSuccessful) { _startTimer(); } else {} } Future checkIpAction() async { final CheckIPEntity entity = await ApiRepository.to.checkIpAction( ip: '' ); if (entity.errorCode!.codeIsSuccessful) { if(state.countryName.value == entity.data!.name){ ShowTipView().showSureAlertDialog('国家地区的选择将影响数据安全,你当前选择的是阿尔巴尼亚,请确认后再继续'.tr, tipTitle: '确认国家或地区'.tr, sureStr: '我知道了'.tr); } } } void changeAgreeState() { _resetCanSub(); } void checkNext(TextEditingController controller) { changeInput(controller); } void changeInput(TextEditingController controller) { if (controller == state.phoneOrEmailController) { state.phoneOrEmailStr.value = controller.text; state.phoneOrEmailStrIsOK.value = state.phoneOrEmailStr.value.isNotEmpty; } if (controller == state.pwdController) { state.pwd.value = controller.text; } if (controller == state.sureController) { state.surePwd.value = controller.text; } if (controller == state.codeController) { state.verificationCode.value = controller.text; } _resetCanSub(); } void _resetCanSub() { state.canSub.value = state.pwdIsOK && state.codeIsOK && (state.isIphoneType.value ? state.isIphone : state.isEmail); } @override void onReady() { super.onReady(); XSConstantMacro().getDeviceInfoData().then((Map data) { state.deviceInfoMap.value = data; }).catchError((error) { // 适当处理错误 AppLog.log('获取设备信息时出错: $error'); }); } }