95 lines
2.9 KiB
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']);
|
|
}
|
|
}
|
|
}
|
|
}
|