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.
65 lines
2.0 KiB
65 lines
2.0 KiB
2 weeks ago
|
// 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 {
|
||
|
// 假设从数据库或其他来源获取问题列表
|
||
|
final RxList<Problem> problems = <Problem>[].obs;
|
||
|
|
||
|
// 用于存储用户选中的问题
|
||
|
final RxList<Problem> selectedProblems = <Problem>[].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();
|
||
|
}
|
||
|
}
|