这是CaiYouHui前端,一个关于flutter的安卓app,前端使用flutter实现

user_repository.dart 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import 'dart:convert';
  2. import '../../core/constants/api_constants.dart';
  3. import '../datasources/remote/api_client.dart';
  4. import '../models/user.dart';
  5. import '../models/api_response.dart';
  6. class UserRepository {
  7. final ApiClient _apiClient;
  8. UserRepository({required ApiClient apiClient}) : _apiClient = apiClient;
  9. // 获取用户资料
  10. Future<ApiResponse<User>> getUserProfile() async {
  11. try {
  12. final response = await _apiClient.get(
  13. ApiConstants.getUserProfileUrl(),
  14. withAuth: true,
  15. );
  16. if (response.statusCode == 200) {
  17. final userData = json.decode(response.body);
  18. return ApiResponse<User>(
  19. success: true,
  20. message: '获取成功',
  21. data: User.fromJson(userData),
  22. );
  23. } else {
  24. return ApiResponse<User>(
  25. success: false,
  26. message: '获取用户资料失败',
  27. );
  28. }
  29. } catch (e) {
  30. return ApiResponse<User>(
  31. success: false,
  32. message: '获取失败: $e',
  33. );
  34. }
  35. }
  36. // 更新用户资料
  37. Future<ApiResponse<User>> updateUserProfile(User user) async {
  38. try {
  39. final updateData = {
  40. 'full_name': user.fullName,
  41. 'email': user.email,
  42. };
  43. final response = await _apiClient.put(
  44. ApiConstants.getUpdateProfileUrl(),
  45. updateData,
  46. withAuth: true,
  47. );
  48. if (response.statusCode == 200) {
  49. final userData = json.decode(response.body);
  50. return ApiResponse<User>(
  51. success: true,
  52. message: '更新成功',
  53. data: User.fromJson(userData),
  54. );
  55. } else {
  56. final error = json.decode(response.body);
  57. return ApiResponse<User>(
  58. success: false,
  59. message: error['detail'] ?? '更新失败',
  60. );
  61. }
  62. } catch (e) {
  63. return ApiResponse<User>(
  64. success: false,
  65. message: '更新失败: $e',
  66. );
  67. }
  68. }
  69. }