Making.School.Asignment.app/lib/common/store/user_store.dart

82 lines
2.4 KiB
Dart

import 'package:get/get.dart';
import 'package:school_asignment_app/common/job/enum_subject.dart';
import 'package:school_asignment_app/common/job/user_info.dart';
import 'package:school_asignment_app/common/job/user_info_detail.dart';
import 'package:school_asignment_app/common/mixins/request_tool_mixin.dart';
import 'package:school_asignment_app/common/utils/storage.dart';
import 'package:school_asignment_app/common/store/app_storage_key.dart';
import 'package:school_asignment_app/routes/app_pages.dart';
class UserStore extends GetxController with RequestToolMixin{
UserStore._privateConstructor() {
init();
}
static final UserStore _instance = UserStore._privateConstructor();
factory UserStore() {
return _instance;
}
static UserStore get to => Get.find();
/// 是否登录
final isLogin = false.obs;
String? token;
String? xToken;
/// 用户Token及过期时间信息
Rx<UserInfo?> userInfo = Rx(null);
/// 用户详细信息
Rx<UserInfoDetail?> userDetailInfo = Rx(null);
RxList<EnumSubject> subjectList = RxList();
void init() {
token = StorageService.to.read(AppStorageKey.token.value) ?? '';
try {
userInfo.value = StorageService.to.read(AppStorageKey.userInfo.value);
userDetailInfo.value = StorageService.to.read(AppStorageKey.userDetailInfo.value);
} catch (err) {
StorageService.to.remove(AppStorageKey.userInfo.value);
StorageService.to.remove(AppStorageKey.userDetailInfo.value);
}
if ((token?.isNotEmpty ?? false) && userInfo.value != null) {
isLogin.value = true;
} else {
isLogin.value = false;
Get.toNamed(Routes.login);
}
}
/// 保存 token
void setToken(String token) {
token = token;
StorageService.to.write(AppStorageKey.token.value, token);
}
/// 更新Xtoken的匙
void setXToken(String xtoken) {
xtoken = xtoken;
StorageService.to.write(AppStorageKey.xToken.value, xtoken);
}
/// 保存 用户信息
void setUserInfo(UserInfo info) {
userInfo.value = info;
StorageService.to.write(AppStorageKey.userInfo.value, info);
}
/// 保存 用户信息
void setUserDetailInfo(UserInfoDetail info) {
userDetailInfo.value = info;
StorageService.to.write(AppStorageKey.userDetailInfo.value, info);
}
//获取科目
getSubjectList() async {
var res = await getClient().getEnumSubjectList('EnumSubject');
subjectList.value = res['EnumSubject']!;
}
}