Browse Source

fate : 我的,姓名,头像,email

dev
徐振升 2 weeks ago
parent
commit
7af9347b7e
  1. 23
      lib/data/models/auth_model.dart
  2. 26
      lib/data/repositories/my_repository.dart
  3. 4
      lib/modules/home/bindings/home_binding.dart
  4. 5
      lib/modules/my/bingdings/my_binding.dart
  5. 27
      lib/modules/my/controllers/my_controller.dart
  6. 43
      lib/modules/my/views/my_page.dart

23
lib/data/models/auth_model.dart

@ -51,3 +51,26 @@ class LoginResponse {
);
}
}
class Profile {
final String id;
final String name;
final String? email;
final String? signatureImage;
Profile({
required this.id,
required this.name,
this.email,
this.signatureImage,
});
factory Profile.fromJson(Map<String, dynamic> json) {
return Profile(
id: json['id'] as String,
name: json['name'] as String,
email: json['email'] as String?,
signatureImage: json['signatureImage'] as String?,
);
}
}

26
lib/data/repositories/my_repository.dart

@ -0,0 +1,26 @@
import 'package:dio/dio.dart';
import 'package:problem_check_system/data/models/auth_model.dart';
import 'package:problem_check_system/data/providers/dio_provider.dart';
class MyRepository {
final DioProvider dioProvider;
MyRepository({required this.dioProvider});
/// API
Future<Profile> getUserProfile() async {
try {
final response = await dioProvider.get('/api/Accounts/Profile');
// JSON Profile
return Profile.fromJson(response.data);
} on DioException catch (e) {
//
// DioException
throw Exception('Network error: ${e.message}');
} catch (e) {
//
rethrow; //
}
}
}

4
lib/modules/home/bindings/home_binding.dart

@ -2,6 +2,7 @@ import 'package:get/get.dart';
import 'package:problem_check_system/data/providers/connectivity_provider.dart';
import 'package:problem_check_system/data/providers/local_database.dart';
import 'package:problem_check_system/data/repositories/auth_repository.dart';
import 'package:problem_check_system/data/repositories/my_repository.dart';
import 'package:problem_check_system/modules/auth/controllers/auth_controller.dart';
import 'package:problem_check_system/modules/home/controllers/home_controller.dart';
import 'package:problem_check_system/modules/my/controllers/my_controller.dart';
@ -24,7 +25,8 @@ class HomeBinding implements Bindings {
),
fenix: true,
);
Get.lazyPut<MyController>(() => MyController());
Get.lazyPut<MyRepository>(() => MyRepository(dioProvider: Get.find()));
Get.lazyPut<MyController>(() => MyController(myRepository: Get.find()));
Get.lazyPut<AuthRepository>(
() => AuthRepository(
dioProvider: Get.find(),

5
lib/modules/my/bingdings/my_binding.dart

@ -1,9 +1,8 @@
import 'package:get/get.dart';
import 'package:problem_check_system/data/repositories/my_repository.dart';
import 'package:problem_check_system/modules/my/controllers/my_controller.dart';
class MyBinding implements Bindings {
@override
void dependencies() {
Get.lazyPut<MyController>(() => MyController());
}
void dependencies() {}
}

27
lib/modules/my/controllers/my_controller.dart

@ -1,10 +1,15 @@
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:problem_check_system/data/repositories/my_repository.dart';
class MyController extends GetxController {
final MyRepository myRepository;
MyController({required this.myRepository});
//
var userName = '张兰雪'.obs;
var userPhone = '138****8547'.obs;
var userImage = "".obs;
@override
void onInit() {
@ -13,21 +18,11 @@ class MyController extends GetxController {
}
// API加载用户信息
void _loadUserInfo() {
// GetStorage
final box = GetStorage();
final storedUserName = box.read('userName');
final storedUserPhone = box.read('userPhone');
if (storedUserName != null) {
userName.value = storedUserName;
}
if (storedUserPhone != null) {
//
userPhone.value = storedUserPhone;
}
// API
Future<void> _loadUserInfo() async {
var userProfile = await myRepository.getUserProfile();
userName.value = userProfile.name;
userPhone.value = userProfile.email ?? '138****8547';
userImage.value = userProfile.signatureImage.toString();
}
//

43
lib/modules/my/views/my_page.dart

@ -97,10 +97,45 @@ class MyPage extends StatelessWidget {
width: 1.w,
),
),
child: const Icon(
Icons.person,
size: 40,
color: Color(0xFFC8E0FF),
// child: const Icon(
// Icons.person,
// size: 40,
// color: Color(0xFFC8E0FF),
// ),
child: Image.network(
controller.userImage.value,
// Show a CircularProgressIndicator while the image is loading
loadingBuilder:
(
BuildContext context,
Widget child,
ImageChunkEvent? loadingProgress,
) {
if (loadingProgress == null) {
return child;
}
return Center(
child: CircularProgressIndicator(
value: loadingProgress.expectedTotalBytes != null
? loadingProgress.cumulativeBytesLoaded /
loadingProgress.expectedTotalBytes!
: null,
),
);
},
// Show a placeholder icon if the image fails to load
errorBuilder:
(
BuildContext context,
Object exception,
StackTrace? stackTrace,
) {
return const Icon(
Icons.person,
size: 40,
color: Color(0xFFC8E0FF),
);
},
),
),
SizedBox(width: 15.w),

Loading…
Cancel
Save