You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.6 KiB

import 'package:dio/dio.dart';
2 weeks ago
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';
2 weeks ago
class MyController extends GetxController {
final AuthRepository authRepository;
MyController({required this.authRepository});
2 weeks ago
// 响应式变量,用于存储用户信息
var userName = '张兰雪'.obs;
var userPhone = '138****8547'.obs;
var userImage = "".obs;
2 weeks ago
@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,这里你可以做其他业务处理,例如清空表单等。
} catch (e) {
// 捕获其他非 DioException 异常
} finally {
isLoading.value = false;
}
2 weeks ago
}
void logout() {
authRepository.clearAuthData();
Get.offAllNamed(AppRoutes.login);
}
2 weeks ago
// 未来可以添加更新用户信息的逻辑
}