// problem_upload_controller.dart import 'package:get/get.dart'; import 'package:problem_check_system/data/models/problem_model.dart'; // import 'package:problem_check_system/services/problem_service.dart'; class ProblemUploadController extends GetxController { ProblemUploadController(); // 假设从数据库或其他来源获取问题列表 final RxList problems = [].obs; // 用于存储用户选中的问题 final RxList selectedProblems = [].obs; @override void onInit() { super.onInit(); // 监听 problems 列表的变化,并在变化时更新 selectedProblems ever(problems, (_) => _updateSelectedList()); // 监听 selectedProblems 列表,更新上传按钮状态 ever(selectedProblems, (_) => _updateUploadButtonState()); fetchProblems(); // 假设从数据源获取问题列表 } void fetchProblems() async { // 模拟从服务中获取问题列表 // final fetched = await ProblemService.getProblemsForUpload(); // problems.assignAll(fetched); } // 监听所有问题的 isChecked 状态,更新 selectedProblems 列表 void _updateSelectedList() { selectedProblems.clear(); for (var problem in problems) { if (problem.isChecked.value) { selectedProblems.add(problem); } } } // 控制上传按钮是否可用 RxBool isUploadEnabled = false.obs; void _updateUploadButtonState() { isUploadEnabled.value = selectedProblems.isNotEmpty; } // 控制全选/取消全选按钮的文案 RxBool allSelected = false.obs; void selectAll() { final bool newState = !allSelected.value; for (var problem in problems) { problem.isChecked.value = newState; } allSelected.value = newState; } void uploadProblems() { if (selectedProblems.isEmpty) return; // 实际的上传逻辑,例如调用 API print('开始上传 ${selectedProblems.length} 个问题...'); // 上传完成后,清空列表或更新状态 selectedProblems.clear(); } }