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.
 
 
 
 
 

168 lines
4.4 KiB

import 'package:dating_touchme_app/controller/global.dart';
import 'package:dating_touchme_app/model/home/user_info_data.dart';
import 'package:dating_touchme_app/network/user_api.dart';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import '../../model/home/post_data.dart';
class UserInformationController extends GetxController {
final String miId;
UserInformationController({required this.miId});
final nowSelect = 0.obs;
final userData = UserInfoData().obs;
// 加载状态
final isLoading = true.obs;
// 错误信息
final errorMessage = RxString('');
List<String> tagList = [
"北京", "160cm", "想要甜甜的恋爱", "本科", "朋友圈摄影师", "英雄联盟", "流放之路",
"CF", "DNA", "堡垒之夜", "SCP"
];
late UserApi _userApi;
final page = 1.obs;
final size = 10.obs;
final postList = <Records>[].obs;
late final EasyRefreshController listRefreshController;
@override
void onInit() {
super.onInit();
listRefreshController = EasyRefreshController(
controlFinishRefresh: true,
controlFinishLoad: true,
);
myUserData.value = GlobalData().userData;
// 验证参数
if (miId.isEmpty) {
errorMessage.value = '用户ID无效';
isLoading.value = false;
SmartDialog.showToast('用户ID无效');
return;
}
try {
_userApi = Get.find<UserApi>();
getUserData();
} catch (e) {
errorMessage.value = '初始化失败';
isLoading.value = false;
SmartDialog.showToast('初始化失败,请稍后重试');
}
}
createUserBlack() async {
try {
final response = await _userApi.userCreateUserBlacklist({
"blackUserId": userData.value.miUserId,
});
if (response.data.isSuccess) {
SmartDialog.showToast('已拉黑成功');
} else {
// 响应失败,抛出异常
throw Exception(response.data.message ?? '获取数据失败');
}
} catch(e){
print('拉黑失败: $e');
SmartDialog.showToast('拉黑失败');
rethrow;
} finally {
}
}
int calculateAge(String birthdayStr) {
final birthday = DateTime.parse(birthdayStr); // 自动识别 1996-1-20
final today = DateTime.now();
int age = today.year - birthday.year;
// 如果今年生日还没过,年龄要减 1
if (today.month < birthday.month ||
(today.month == birthday.month && today.day < birthday.day)) {
age--;
}
return age;
}
final myUserData = GlobalData().userData.obs;
getPostList() async {
try{
final response = await _userApi.userPageAuthorPost(
pageNum: page.value,
pageSize: size.value,
authorUserId: userData.value.miUserId ?? ""
);
if (response.data.isSuccess && response.data.data != null) {
final data = response.data.data?.records ?? [];
postList.addAll(data.toList());
if((data.length ?? 0) == size.value){
listRefreshController.finishLoad(IndicatorResult.success);
} else {
listRefreshController.finishLoad(IndicatorResult.noMore);
}
} else {
// 响应失败,抛出异常
throw Exception(response.data.message ?? '获取数据失败');
}
} catch(e) {
print('活动列表获取失败: $e');
SmartDialog.showToast('活动列表获取失败');
rethrow;
}
}
getUserData() async {
try {
isLoading.value = true;
errorMessage.value = '';
final response = await _userApi.getDongwoMarriageInformationDetail(miId: miId);
if (response.data.isSuccess && response.data.data != null) {
userData.value = response.data.data!;
isLoading.value = false;
getPostList();
} else {
// 响应失败,设置错误信息
final errorMsg = response.data.message ?? '获取数据失败';
errorMessage.value = errorMsg;
isLoading.value = false;
SmartDialog.showToast(errorMsg);
}
} catch(e, stackTrace){
print('获取用户信息失败: $e');
print('堆栈跟踪: $stackTrace');
errorMessage.value = '获取用户信息失败,请稍后重试';
isLoading.value = false;
SmartDialog.showToast('获取用户信息失败,请稍后重试');
// 不再 rethrow,避免导致闪退
}
}
}