Making.School.Asignment.app/lib/page/login_page/login_logic.dart

130 lines
4.4 KiB
Dart

import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:school_asignment_app/common/api/user_api.dart';
import 'package:school_asignment_app/common/job/common/base_structure_result.dart';
import 'package:school_asignment_app/common/job/user_info.dart';
import 'package:school_asignment_app/common/job/user_login.dart';
import 'package:school_asignment_app/common/mixins/request_tool_mixin.dart';
import 'package:school_asignment_app/common/store/user_store.dart';
import 'package:school_asignment_app/common/utils/toast_utils.dart';
import 'package:school_asignment_app/common/utils/utils.dart';
import 'package:school_asignment_app/routes/app_pages.dart';
import 'login_state.dart';
class LoginLogic extends GetxController with RequestToolMixin {
final LoginState state = LoginState();
@override
void onReady() {
// TODO: implement onReady
super.onReady();
}
void onInit() {
super.onInit();
state.userNameController = TextEditingController(text: 'wangyang')..addListener(userNameListener);
state.passwordController = TextEditingController(text: '123@abc');
state.pwdFocus = FocusNode();
state.theFocus = FocusNode();
}
void userNameListener() {
String userName = state.userNameController.text;
int useNameLength = userName.length;
bool hasNameValNew = useNameLength > 0;
if (hasNameValNew != state.hasNameVal) state.hasNameVal = hasNameValNew;
const isProd = bool.fromEnvironment('dart.vm.product');
if (!isProd && useNameLength == 11) {
state.passwordController.text = userName.substring(useNameLength - 6);
}
}
void showPassword() {
state.isShowPwd.value = !state.isShowPwd.value;
}
// 前往登录
void toLogin() async {
if (!state.canLogin.value) return;
state.canLogin.value = false;
void toMsg(msg) {
ToastUtils.showError(msg);
state.canLogin.value = true;
}
Utils.hideKeyboard();
String userName = state.userNameController.text.trim();
String userPwd = state.passwordController.text.trim();
if (userName == '') return toMsg('请填写用户账号');
if (userPwd == '') return toMsg('请填写密码再试');
if (!state.readAgreement.value) return toMsg('请阅读用户协议');
EasyLoading.show(status: 'loading...');
try {
await getClient().toLogin(userName, userPwd);
String? nameidentifier = UserStore().userInfo.value?.nameidentifier;
if (nameidentifier == null) {
throw Exception('用户信息无效,请重试');
}
var data = await getClient().getUser(nameidentifier);
print(data);
//获取科目
UserStore.to.getSubjectList();
EasyLoading.dismiss();
Get.offAllNamed(Routes.home);
// if (resultData.code != 200 || userData?.accessToken == null || userData?.accessToken == '') {
// return toMsg(resultData.message ?? '登录失败,请重试');
// }
// UserStore.to.setToken(userData!.accessToken);
// state.canLogin.value = true;
// BaseStructureResult<UserInfo> userRes = await UserApi.getUserInfo();
// print('99999999999');
// print(userRes.data!.userName);
// if (userRes.code != 200 || userRes.data == null) {
// throw Exception('登录失败,请重试');
// } else {
// UserStore.to.setUserInfo(userRes.data!);
// Get.offAllNamed(Routes.home);
// }
/* fastData.setUser(userRes.data!).then((value) {
// 记住密码
if (keepPwd) {
fastData.setUserPwdAndAccount({'pwd': userPwd, 'account': userName});
}
// 更新
ref.read(userProvider.notifier).initUserInfo();
ref.read(userTokenProvider.notifier).initToken();
// 跳转登录页
Get.toNamed(Routes.login);
// RouterManager.router.navigateTo(context, RouterManager.root, clearStack: true, transition: getTransition());
});*/
} catch (e) {
// FastData.getInstance().cleanShared();
// return toMsg(msg ?? '登录失败,请重试');
} finally {
state.canLogin.value = true;
}
}
@override
void dispose() {
super.dispose();
state.userNameController
..removeListener(userNameListener)
..dispose();
state.passwordController.dispose();
state.pwdFocus.dispose();
state.theFocus.dispose();
}
}