// controllers/visitor_controller.dart import 'package:easy_refresh/easy_refresh.dart'; import 'package:get/get.dart'; import '../../model/home/marriage_data.dart'; import '../../network/user_api.dart'; class VisitorController extends GetxController { // 访客列表 var visitors = [].obs; // Refresh controllers final EasyRefreshController refreshController = EasyRefreshController( controlFinishRefresh: true, controlFinishLoad: true, ); // 分页参数 var currentPage = 1.obs; final int pageSize = 10; var hasMore = true.obs; var total = 0.obs; var isLoading = false.obs; late final UserApi _userApi; @override void onInit() { super.onInit(); _userApi = Get.find(); loadInitialData(); } // 加载初始数据 void loadInitialData() async { isLoading.value = true; final result = await _fetchVisitorData(pageNum: currentPage.value); visitors.assignAll(result['records']); isLoading.value = false; final int current = result['current'] ?? 1; final int total = result['pages'] ?? 1; hasMore.value = current < total; } // 下拉刷新 void onRefresh() async { hasMore.value = true; final result = await _fetchVisitorData(pageNum: currentPage.value); visitors.clear(); visitors.addAll(result['records']); final int current = result['current'] ?? 1; final int total = result['pages'] ?? 1; hasMore.value = current < total; refreshController.finishRefresh(); refreshController.resetFooter(); } // 上拉加载更多 void onLoadMore() async { print('onLoadMore'); if (!hasMore.value) { return; } final result = await _fetchVisitorData(pageNum: currentPage.value + 1); currentPage.value++; final int current = result['current'] as int; final int total = result['pages'] as int; hasMore.value = current < total; visitors.addAll(result['records']); if (hasMore.value) { refreshController.finishLoad(IndicatorResult.success); } else { refreshController.finishLoad(IndicatorResult.noMore); } } // 删除访客 void deleteVisitor(String visitorId) { // visitors.removeWhere((visitor) => visitor.id == visitorId); Get.snackbar('成功', '已删除访客记录'); } Future> _fetchVisitorData({required int pageNum}) async { try { // 调用API获取数据 var response = await _userApi.getVisitorList(pageNum: pageNum, pageSize: pageSize); if (response.data.isSuccess) { final data = response.data.data; // 检查data是否为空 if (data == null) { return { 'records': [], 'current': pageNum, 'pages': 1, 'total': 0, 'size': pageSize, }; } total.value = data.total; return { 'records': data.records, 'current': data.current, 'pages': data.pages, 'total': data.total, 'size': data.size, }; } else { // 响应失败,抛出异常 throw Exception(response.data.message); } } catch (e) { // 向上抛出异常,让调用方处理 rethrow; } } @override void onClose() { refreshController.dispose(); super.onClose(); } }