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 _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; } } void logout() { authRepository.clearAuthData(); Get.offAllNamed(AppRoutes.login); } // 未来可以添加更新用户信息的逻辑 }