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
54 lines
1.6 KiB
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); |
|
} |
|
|
|
// 未来可以添加更新用户信息的逻辑 |
|
}
|
|
|