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

auth_repository.dart 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import '../datasources/local/shared_prefs.dart';
  2. import '../models/user.dart';
  3. import '../models/auth/login_request.dart';
  4. import '../models/auth/register_request.dart';
  5. import '../models/api_response.dart';
  6. class AuthRepository {
  7. final SharedPrefs localDataSource;
  8. AuthRepository({required this.localDataSource});
  9. // 模拟登录
  10. Future<ApiResponse<User>> login(LoginRequest request) async {
  11. await Future.delayed(const Duration(seconds: 1));
  12. // 模拟成功登录
  13. if (request.email == 'test@example.com' && request.password == '123456') {
  14. final user = User(
  15. id: '1',
  16. email: request.email,
  17. name: '测试用户',
  18. avatarUrl: 'https://ui-avatars.com/api/?name=测试用户',
  19. phone: '13800138000',
  20. createdAt: DateTime.now(),
  21. );
  22. // 保存token和用户数据
  23. await localDataSource.setAuthToken('mock_jwt_token_${user.id}');
  24. await localDataSource.setUserData(user.toJson().toString());
  25. return ApiResponse<User>(
  26. success: true,
  27. message: '登录成功',
  28. data: user,
  29. );
  30. } else {
  31. return ApiResponse<User>(
  32. success: false,
  33. message: '邮箱或密码错误',
  34. );
  35. }
  36. }
  37. // 模拟注册
  38. Future<ApiResponse<User>> register(RegisterRequest request) async {
  39. await Future.delayed(const Duration(seconds: 1));
  40. final user = User(
  41. id: DateTime.now().millisecondsSinceEpoch.toString(),
  42. email: request.email,
  43. name: request.name,
  44. phone: request.phone,
  45. createdAt: DateTime.now(),
  46. );
  47. // 保存token和用户数据
  48. await localDataSource.setAuthToken('mock_jwt_token_${user.id}');
  49. await localDataSource.setUserData(user.toJson().toString());
  50. return ApiResponse<User>(
  51. success: true,
  52. message: '注册成功',
  53. data: user,
  54. );
  55. }
  56. // 检查登录状态
  57. Future<bool> isLoggedIn() async {
  58. final token = localDataSource.getAuthToken();
  59. return token != null && token.isNotEmpty;
  60. }
  61. // 获取当前用户
  62. Future<User?> getCurrentUser() async {
  63. final userData = localDataSource.getUserData();
  64. if (userData != null) {
  65. try {
  66. // 这里简单处理,实际应该解析JSON
  67. return User(
  68. id: '1',
  69. email: 'test@example.com',
  70. name: '测试用户',
  71. );
  72. } catch (e) {
  73. return null;
  74. }
  75. }
  76. return null;
  77. }
  78. // 注销
  79. Future<bool> logout() async {
  80. await localDataSource.removeAuthToken();
  81. await localDataSource.removeUserData();
  82. return true;
  83. }
  84. }