diff --git a/lib/app/routes/app_pages.dart b/lib/app/routes/app_pages.dart index 3528d3b..4c80be9 100644 --- a/lib/app/routes/app_pages.dart +++ b/lib/app/routes/app_pages.dart @@ -5,6 +5,8 @@ import 'package:problem_check_system/modules/auth/bindings/login_binding.dart'; import 'package:problem_check_system/modules/auth/views/login_page.dart'; import 'package:problem_check_system/modules/my/bindings/change_password_binding.dart'; import 'package:problem_check_system/modules/my/views/change_password.dart'; +import 'package:problem_check_system/modules/problem/bindings/problem_form_binding.dart'; +import 'package:problem_check_system/modules/problem/views/problem_form_page.dart'; import 'package:problem_check_system/modules/problem/views/problem_upload_page.dart'; import 'app_routes.dart'; @@ -32,5 +34,10 @@ abstract class AppPages { name: AppRoutes.problemUpload, page: () => const ProblemUploadPage(), ), + GetPage( + name: AppRoutes.problemForm, + page: () => const ProblemFormPage(), + binding: ProblemFormBinding(), + ), ]; } diff --git a/lib/app/routes/app_routes.dart b/lib/app/routes/app_routes.dart index 1b49c23..dc498fc 100644 --- a/lib/app/routes/app_routes.dart +++ b/lib/app/routes/app_routes.dart @@ -2,8 +2,13 @@ abstract class AppRoutes { // 命名路由,使用 const 常量 static const home = '/home'; static const login = '/login'; - static const problem = '/problem'; + static const my = '/my'; static const changePassword = '/changePassword'; + + // #region + static const problem = '/problem'; static const problemUpload = '/problemUpload'; + static const problemForm = '/problemForm'; + // #endregion } diff --git a/lib/data/repositories/problem_repository.dart b/lib/data/repositories/problem_repository.dart index 0000ed4..be92bee 100644 --- a/lib/data/repositories/problem_repository.dart +++ b/lib/data/repositories/problem_repository.dart @@ -54,7 +54,6 @@ class ProblemRepository extends GetxService { return await sqliteProvider.getProblems( startDate: startDate, endDate: endDate, - syncStatus: SyncStatus.notSynced, ); } diff --git a/lib/modules/problem/bindings/problem_form_binding.dart b/lib/modules/problem/bindings/problem_form_binding.dart new file mode 100644 index 0000000..dd13cf5 --- /dev/null +++ b/lib/modules/problem/bindings/problem_form_binding.dart @@ -0,0 +1,11 @@ +import 'package:get/get.dart'; +import 'package:problem_check_system/modules/problem/controllers/problem_form_controller.dart'; + +class ProblemFormBinding extends Bindings { + @override + void dependencies() { + Get.lazyPut( + () => ProblemFormController(problemRepository: Get.find()), + ); + } +} diff --git a/lib/modules/problem/controllers/problem_controller.dart b/lib/modules/problem/controllers/problem_controller.dart index ca37015..eb26ce5 100644 --- a/lib/modules/problem/controllers/problem_controller.dart +++ b/lib/modules/problem/controllers/problem_controller.dart @@ -287,7 +287,15 @@ class ProblemController extends GetxController } } - /// 筛选问题 + // todo 查询问题:起始时间,结束时间,是否上传,是否绑定,重载查询 + void search({ + DateRange? newDateRange, + String? newUploadStatus, + String? newBindingStatus, + }) {} + + /// + /// void updateFiltersAndLoadProblems({ DateRange? newDateRange, String? newUploadStatus, diff --git a/lib/modules/problem/controllers/problem_form_controller.dart b/lib/modules/problem/controllers/problem_form_controller.dart index 346951c..528374e 100644 --- a/lib/modules/problem/controllers/problem_form_controller.dart +++ b/lib/modules/problem/controllers/problem_form_controller.dart @@ -8,10 +8,10 @@ import 'package:problem_check_system/data/models/enum_model.dart'; import 'package:problem_check_system/data/models/image_metadata_model.dart'; import 'dart:io'; import 'package:problem_check_system/data/models/problem_model.dart'; -import 'problem_controller.dart'; +import 'package:problem_check_system/data/repositories/problem_repository.dart'; class ProblemFormController extends GetxController { - final ProblemController problemController; + final ProblemRepository problemRepository; final TextEditingController descriptionController = TextEditingController(); final TextEditingController locationController = TextEditingController(); final RxList selectedImages = [].obs; @@ -21,7 +21,7 @@ class ProblemFormController extends GetxController { Problem? _currentProblem; // 使用依赖注入,便于测试 - ProblemFormController({required this.problemController}); + ProblemFormController({required this.problemRepository}); /// 初始化方法,用于加载现有问题数据 void init(Problem? problem) { @@ -153,7 +153,7 @@ class ProblemFormController extends GetxController { creationTime: DateTime.now(), // 更新编辑时间 ); - await problemController.updateProblem(updatedProblem); + await problemRepository.updateProblem(updatedProblem); Get.back(result: true); // 返回成功结果 Get.snackbar('成功', '问题已更新'); } else { @@ -163,10 +163,9 @@ class ProblemFormController extends GetxController { location: locationController.text, imageUrls: imagePaths, creationTime: DateTime.now(), - syncStatus: SyncStatus.synced, ); - await problemController.addProblem(problem); + await problemRepository.insertProblem(problem); Get.back(result: true); // 返回成功结果 Get.snackbar('成功', '问题已保存'); } diff --git a/lib/modules/problem/views/problem_page.dart b/lib/modules/problem/views/problem_page.dart index b24eb8f..01c27ad 100644 --- a/lib/modules/problem/views/problem_page.dart +++ b/lib/modules/problem/views/problem_page.dart @@ -182,7 +182,7 @@ class ProblemPage extends GetView { child: FloatingActionButton( heroTag: "btn_add", onPressed: () { - Get.to(() => ProblemFormPage()); + Get.toNamed(AppRoutes.problemForm); }, shape: const CircleBorder(), backgroundColor: Colors.blue[300],