circle_app/circle_app/lib/app/reset_pwd/logic.dart

95 lines
2.9 KiB
Dart

import 'dart:async';
import 'package:circle_app/network/api.dart';
import 'package:circle_app/network/dio_manager.dart';
import 'package:circle_app/util/SharedPreferencesHelper.dart';
import 'package:circle_app/util/util.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import '../login/login/logic.dart';
import 'state.dart';
class Reset_pwdLogic extends GetxController {
final Reset_pwdState state = Reset_pwdState();
var codeController = TextEditingController();
var new_passwordController = TextEditingController();
var config_passwordController = TextEditingController();
bool sendCodeBtn = false; //判断发送短信按钮是否点击过标志
int seconds = 60;
Timer? t;
@override
void dispose() {
super.dispose();
codeController.dispose();
new_passwordController.dispose();
config_passwordController.dispose();
t?.cancel();
}
//倒计时
starDownTimer() async {
if (sendCodeBtn == false && seconds == 60) {
sendCodeBtn = true;
getCode();
}
}
Future<void> getCode() async {
SmartDialog.showLoading(msg: '正在发送中');
var sp = await SharedPreferencesHelper.getInstance();
var data = await DioManager.instance.post(
url: Api.sendCode, params: {"phone": sp.getString(SharedPreferencesHelper.LOGINPHONE)});
var bean = BaseResponse<Data>.fromJson(data, (data) => Data.fromJson(data));
SmartDialog.dismiss();
if (bean.code == 200) {
showOKToast('验证码已发送,稍后可前往短信查看');
if (bean.data!.code != null) {
codeController.text = bean.data!.code.toString();
update();
}
t = Timer.periodic(const Duration(milliseconds: 1000), (timer) {
seconds--;
if (seconds == 0) {
t?.cancel(); //清除
sendCodeBtn = false;
seconds = 60;
}
update();
});
} else {
sendCodeBtn = false;
showOKToast(bean.msg);
}
}
void setPassword() async {
if (codeController.text.isEmpty) {
showOKToast('请输入验证码');
} else if (new_passwordController.text.isEmpty) {
showOKToast('请输入6-12位新密码');
} else if (config_passwordController.text.isEmpty) {
showOKToast('再次输入新密码');
} else if (new_passwordController.text != config_passwordController.text) {
showOKToast('新密码和确认密码不一致哦');
} else {
var sp = await SharedPreferencesHelper.getInstance();
var result = await DioManager.instance.put(url: Api.resetPassword,params: {'new_password':new_passwordController.text,'phone':sp.getString(SharedPreferencesHelper.LOGINPHONE),'verify_code':codeController.text});
if (result['code'] == 200) {
showOKToast('密码重置成功');
Get.back();
Get.back();
} else {
showOKToast(result['msg']);
}
}
}
}