diff --git a/lib/app/features/enterprise/presentation/bindings/enterprise_info_binding.dart b/lib/app/features/enterprise/presentation/bindings/enterprise_info_binding.dart index e0cab4e..88f69f9 100644 --- a/lib/app/features/enterprise/presentation/bindings/enterprise_info_binding.dart +++ b/lib/app/features/enterprise/presentation/bindings/enterprise_info_binding.dart @@ -5,15 +5,12 @@ import 'package:problem_check_system/app/features/enterprise/presentation/contro class EnterpriseInfoBinding extends Bindings { @override void dependencies() { - // 2. 将获取到的参数(可能为 null)传递给 Controller 的构造函数。 Get.lazyPut(() => EnterpriseFormController()); - // 3. 注入 EnterpriseInfoController,并传入 EnterpriseFormController 实例。 Get.lazyPut( () => EnterpriseInfoController( enterpriseFormController: Get.find(), + problemListController: Get.find(), ), ); - final problemListController = Get.find(); - problemListController.test(); } } diff --git a/lib/app/features/enterprise/presentation/controllers/enterprise_form_controller.dart b/lib/app/features/enterprise/presentation/controllers/enterprise_form_controller.dart index 3b76674..e7c9286 100644 --- a/lib/app/features/enterprise/presentation/controllers/enterprise_form_controller.dart +++ b/lib/app/features/enterprise/presentation/controllers/enterprise_form_controller.dart @@ -178,8 +178,4 @@ class EnterpriseFormController extends GetxController { hazardSourceController.dispose(); super.onClose(); } - - void test() { - Get.log('EnterpriseFormController test method called'); - } } diff --git a/lib/app/features/enterprise/presentation/controllers/enterprise_info_controller.dart b/lib/app/features/enterprise/presentation/controllers/enterprise_info_controller.dart index b17ea78..5ff7253 100644 --- a/lib/app/features/enterprise/presentation/controllers/enterprise_info_controller.dart +++ b/lib/app/features/enterprise/presentation/controllers/enterprise_info_controller.dart @@ -1,14 +1,54 @@ import 'package:get/get.dart'; +import 'package:problem_check_system/app/features/enterprise/domain/entities/enterprise.dart'; import 'package:problem_check_system/app/features/enterprise/presentation/controllers/enterprise_form_controller.dart'; +import 'package:problem_check_system/app/features/problem/presentation/controllers/problem_list_controller.dart'; class EnterpriseInfoController extends GetxController { - EnterpriseInfoController({required this.enterpriseFormController}); + EnterpriseInfoController({ + required this.enterpriseFormController, + required this.problemListController, + }); final EnterpriseFormController enterpriseFormController; + final ProblemListController problemListController; + + final String tab1 = '问题列表'; + final String tab2 = '企业基本情况'; + + Enterprise? _initialEnterprise; @override void onInit() { super.onInit(); - Get.log('EnterpriseInfoController initialized'); + // 在 onInit 中只做“准备”工作,不要触发UI更新 + // 比如解析参数,并将其存储在一个临时变量中 + if (Get.arguments is Map) { + final arguments = Get.arguments as Map; + if (arguments.containsKey('data')) { + _initialEnterprise = arguments['data'] as Enterprise; + } + } + Get.log('EnterpriseInfoController Initialized.'); + } + + @override + void onReady() { + super.onReady(); + // onReady 在第一帧渲染完成后执行,此时修改状态是安全的 + if (_initialEnterprise != null) { + // 在这里调用会立即改变 isLoading 状态的方法 + problemListController.setFilters(_initialEnterprise!); + } + Get.log('EnterpriseInfoPage is ready. Loading initial data.'); + } + + void navigateToAddForm() { + problemListController.navigateToAddForm(); + } + + @override + void onClose() { + problemListController.clearFilters(); + super.onClose(); } } diff --git a/lib/app/features/enterprise/presentation/pages/enterprise_info_page.dart b/lib/app/features/enterprise/presentation/pages/enterprise_info_page.dart index 0afd46d..b2ce384 100644 --- a/lib/app/features/enterprise/presentation/pages/enterprise_info_page.dart +++ b/lib/app/features/enterprise/presentation/pages/enterprise_info_page.dart @@ -65,23 +65,25 @@ class EnterpriseInfoPage extends GetView { indicatorPadding: EdgeInsetsGeometry.only(bottom: 4.h), // 指示器内边距), indicatorSize: TabBarIndicatorSize.label, // 指示器宽度与文字同宽 dividerHeight: 0, // 去掉 TabBar 底部的分割线 - tabs: const [ - Tab(text: '问题列表'), - Tab(text: '企业基本情况'), + tabs: [ + Tab(text: controller.tab1), + Tab(text: controller.tab2), ], ), - centerTitle: false, - titleSpacing: 0, + centerTitle: true, + // titleSpacing: 0, // --- 右侧操作按钮 --- actions: [ IconButton( icon: Icon(Icons.add, color: Colors.white), // 使用 .sp - onPressed: () {}, - ), - IconButton( - icon: Icon(Icons.upload, color: Colors.pink[300]), // 使用 .sp - onPressed: () {}, + onPressed: () { + controller.navigateToAddForm(); + }, ), + // IconButton( + // icon: Icon(Icons.upload, color: Colors.pink[300]), // 使用 .sp + // onPressed: () {}, + // ), ], ); } diff --git a/lib/app/features/problem/presentation/controllers/problem_list_controller.dart b/lib/app/features/problem/presentation/controllers/problem_list_controller.dart index 0c531b5..5962aa4 100644 --- a/lib/app/features/problem/presentation/controllers/problem_list_controller.dart +++ b/lib/app/features/problem/presentation/controllers/problem_list_controller.dart @@ -34,8 +34,8 @@ class ProblemListController extends GetxController { final isSyncing = false.obs; // 显示或隐藏 AppBar 和筛选区域的状态 - final showAppBar = true; - final showFilterSection = true; + final showAppBar = true.obs; + final showFilterSection = true.obs; final enterpriseList = [].obs; // 筛选条件 @@ -200,7 +200,7 @@ class ProblemListController extends GetxController { Future loadProblemItems() async { expansibleController.collapse(); - isLoading.value = true; + isLoading(true); try { final ProblemFilterParams params = ProblemFilterParams( enterpriseId: selectedEnterprise.value?.id, @@ -214,21 +214,26 @@ class ProblemListController extends GetxController { } catch (e) { Get.snackbar('错误', '加载问题列表失败: $e'); } finally { - isLoading.value = false; + isLoading(false); } } // 设置筛选条件 void setFilters(Enterprise enterprise) { + showAppBar.value = false; + showFilterSection.value = false; selectedEnterprise.value = enterprise; selectedBound.value = null; selectedStatus.value = null; startDate.value = null; endDate.value = null; + loadProblemItems(); } // 清除筛选条件 void clearFilters() { + showAppBar.value = true; + showFilterSection.value = true; selectedEnterprise.value = null; selectedBound.value = null; selectedStatus.value = null; diff --git a/lib/app/features/problem/presentation/pages/problem_list_page.dart b/lib/app/features/problem/presentation/pages/problem_list_page.dart index 451d651..da4fa36 100644 --- a/lib/app/features/problem/presentation/pages/problem_list_page.dart +++ b/lib/app/features/problem/presentation/pages/problem_list_page.dart @@ -15,17 +15,26 @@ class ProblemListPage extends GetView { @override Widget build(BuildContext context) { return Scaffold( - appBar: controller.showAppBar - ? CustomAppBar( - titleName: '问题列表', - actionsVisible: true, - onAddPressed: () => controller.navigateToAddForm(), - ) - : null, + appBar: PreferredSize( + preferredSize: const Size.fromHeight(kToolbarHeight), + child: Obx( + () => controller.showAppBar.value + ? CustomAppBar( + titleName: '问题列表', + actionsVisible: true, + onAddPressed: () => controller.navigateToAddForm(), + ) + : const SizedBox.shrink(), + ), + ), body: Column( children: [ // 根据参数决定是否构建筛选区域 - if (controller.showFilterSection) _buildFilterSection(), + Obx( + () => controller.showFilterSection.value + ? _buildFilterSection() + : const SizedBox.shrink(), + ), const Divider(height: 1, thickness: 1), // 列表区域总是显示