|
|
|
import 'package:dio/dio.dart';
|
|
|
|
import 'package:get/get.dart';
|
|
|
|
import 'package:problem_check_system/app/routes/app_routes.dart';
|
|
|
|
import 'package:problem_check_system/data/repositories/auth_repository.dart';
|
|
|
|
|
|
|
|
class MyController extends GetxController {
|
|
|
|
final AuthRepository authRepository;
|
|
|
|
|
|
|
|
MyController({required this.authRepository});
|
|
|
|
|
|
|
|
// 响应式变量,用于存储用户信息
|
|
|
|
var userName = '张兰雪'.obs;
|
|
|
|
var userPhone = '138****8547'.obs;
|
|
|
|
var userImage = "".obs;
|
|
|
|
|
|
|
|
@override
|
|
|
|
void onInit() {
|
|
|
|
super.onInit();
|
|
|
|
_loadUserInfo();
|
|
|
|
}
|
|
|
|
|
|
|
|
// 在你的 GetxController 中添加一个可观察的加载状态
|
|
|
|
RxBool isLoading = false.obs;
|
|
|
|
|
|
|
|
/// 从本地存储或API加载用户信息
|
|
|
|
Future<void> _loadUserInfo() async {
|
|
|
|
// 设置加载状态为 true
|
|
|
|
isLoading.value = true;
|
|
|
|
try {
|
|
|
|
// 调用仓库层方法
|
|
|
|
final userProfile = await authRepository.getUserProfile();
|
|
|
|
|
|
|
|
// 更新用户信息,如果字段为 null,则使用默认值
|
|
|
|
userName.value = userProfile.name ?? "无";
|
|
|
|
userPhone.value = userProfile.email ?? '138****8547';
|
|
|
|
userImage.value = userProfile.signatureImage.toString();
|
|
|
|
} on DioException catch (e) {
|
|
|
|
// 捕获由拦截器处理后抛出的 DioException
|
|
|
|
// 拦截器已经显示了 Snackbar,这里你可以做其他业务处理,例如清空表单等。
|
|
|
|
Get.log(e.toString());
|
|
|
|
} catch (e) {
|
|
|
|
// 捕获其他非 DioException 异常
|
|
|
|
} finally {
|
|
|
|
isLoading.value = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void logout() {
|
|
|
|
authRepository.clearAuthData();
|
|
|
|
Get.offAllNamed(AppRoutes.login);
|
|
|
|
}
|
|
|
|
|
|
|
|
// 未来可以添加更新用户信息的逻辑
|
|
|
|
}
|