Forráskód Böngészése

1、优化体检系统表格选中事件

guanxinyi 1 éve
szülő
commit
c16fff6f2d

+ 9 - 2
lib/components/table/table.dart

@@ -32,6 +32,7 @@ class VitalTable<T> extends StatefulWidget {
     this.rowTextStyle,
     this.selectedTextStyle,
     this.noDataHintText,
+    this.currectSelected,
   })  : assert(() {
           if (showSelect == true && selecteds == null) {
             throw FlutterError(
@@ -106,6 +107,9 @@ class VitalTable<T> extends StatefulWidget {
   /// 选中行文本样式
   final TextStyle? selectedTextStyle;
 
+  /// 当前选中的
+  int? currectSelected = -1;
+
   @override
   State<StatefulWidget> createState() => _VitalTableState<T>();
 }
@@ -114,11 +118,15 @@ class _VitalTableState<T> extends State<VitalTable<T>> {
   final ScrollController _scrollController = ScrollController();
   List<int> _selectedIdxs = [];
   List<T> _source = [];
-  int _currectSelected = -1;
+  late int _currectSelected = widget.currectSelected ?? -1;
 
   @override
   void didUpdateWidget(VitalTable<T> oldWidget) {
     _loadData();
+    if (widget.currectSelected != oldWidget.currectSelected) {
+      _currectSelected = widget.currectSelected ?? -1;
+      setState(() {});
+    }
     super.didUpdateWidget(oldWidget);
   }
 
@@ -131,7 +139,6 @@ class _VitalTableState<T> extends State<VitalTable<T>> {
   void _loadData() {
     _selectedIdxs = [if (widget.selecteds != null) ...widget.selecteds!];
     _source = widget.source ?? [];
-    _currectSelected = -1;
   }
 
   @override

+ 4 - 1
lib/pages/medical/widgets/health_check/health_check_list/controller.dart

@@ -33,6 +33,9 @@ class HealthCheckListController extends GetxController {
   /// 预约列表的总数
   int appointmentModelListLength = 0;
 
+  /// 当前列表选中的
+  int currectSelected = -1;
+
   /// 表格loading
   bool tableLoading = true;
 
@@ -54,7 +57,7 @@ class HealthCheckListController extends GetxController {
   }) async {
     tableLoading = true;
     currPageIndex = pageIndex!;
-
+    currectSelected = -1;
     var result = await registrationManager.getRegisterInfoPageAsync(
       pageSize: pageSize,
       pageIndex: pageIndex,

+ 1 - 3
lib/pages/medical/widgets/health_check/health_check_list/view.dart

@@ -1,15 +1,12 @@
 // ignore_for_file: must_be_immutable
 
 import 'package:fis_i18n/i18n.dart';
-import 'package:fis_jsonrpc/rpc.dart';
 import 'package:fis_ui/index.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:vitalapp/components/table/table.dart';
-import 'package:vitalapp/managers/interfaces/patient.dart';
 import 'package:vitalapp/pages/medical/widgets/health_check/health_check_list/controller.dart';
 import 'package:vitalapp/pages/medical_checkup_station/registration/state/list.dart';
-import 'package:vitalapp/store/store.dart';
 
 class HealthCheckTable extends GetView<HealthCheckListController> {
   HealthCheckTable({
@@ -42,6 +39,7 @@ class HealthCheckTable extends GetView<HealthCheckListController> {
                   // await  controller.changeHeartCheck(resident);
                   onRowTap.call(resident);
                 },
+                currectSelected: controller.currectSelected,
                 onAllRowsSelected: (value, idxs) => {},
                 headerTextStyle: const TextStyle(
                   fontSize: 20,

+ 5 - 1
lib/pages/medical/widgets/health_check/view.dart

@@ -39,6 +39,10 @@ class HealthCheck extends GetView<HealthCheckListController> {
               await _onResponseClick(value, false);
             },
             onCheckTap: (value) async {
+              /// 这是表格选中
+              controller.currectSelected =
+                  controller.residentList.indexOf(value);
+              controller.update(["healthCheck_table"]);
               await _onResponseClick(value, true);
             },
           ),
@@ -159,7 +163,7 @@ class HealthCheck extends GetView<HealthCheckListController> {
     return GetBuilder<HealthCheckListController>(
       id: "health_detail",
       builder: (_) {
-        if (controller.tableData == null || controller.tableData == [[]])
+        if (controller.tableData == null || controller.tableData?.length == 0)
           return VNoDataView();
         return Column(
           children: [