Эх сурвалжийг харах

1、优化检测数据缓存

guanxinyi 1 жил өмнө
parent
commit
eb610eae88

+ 29 - 6
lib/pages/medical/controller.dart

@@ -53,12 +53,11 @@ class MedicalController extends FControllerBase {
     MedicalItem(key: DeviceTypes.URINE, diagnosticItem: '尿常规'),
     MedicalItem(key: DeviceTypes.HEART, diagnosticItem: '心电'),
   ];
-
   @override
-  Future<void> onLoad() async {
+  void onReady() {
     initData();
     getAccessTypes();
-    return super.onLoad();
+    super.onReady();
   }
 
   Future<void> initData() async {
@@ -70,17 +69,19 @@ class MedicalController extends FControllerBase {
       } else {
         await saveCachedAppDataId();
       }
-      await readCachedRecord();
+      await initReadCached();
     }
   }
 
   Future<void> getAccessTypes() async {
+    List<MedicalItem> medicalItemList = [];
     List<String> accessTypes = await _deviceManager.getAccessTypes();
     for (var element in _medicalMenus) {
       if (accessTypes.contains(element.key)) {
-        state.medicalMenuList.add(element);
+        medicalItemList.add(element);
       }
     }
+    state.medicalMenuList = medicalItemList;
   }
 
   Future<DeviceModel?> getDevice(String type) async {
@@ -88,13 +89,33 @@ class MedicalController extends FControllerBase {
     return devices.firstWhereOrNull((element) => element.type == type);
   }
 
-  Future<void> readCachedRecord() async {
+  Future<void> initReadCached() async {
     if (patientCode.isNotEmpty) {
       TextStorage cachedRecord = TextStorage(
         fileName: 'JKJC',
         directory: "patient/$patientCode",
       );
       String? value = await cachedRecord.read();
+      if (value == null) {
+        diagnosisDataValue = {};
+        Store.resident.handleSaveMedicalData(jsonEncode(diagnosisDataValue));
+        return;
+      }
+      Store.resident.handleSaveMedicalData(value);
+      diagnosisDataValue = jsonDecode(value);
+    }
+  }
+
+  Future<void> readCachedRecord() async {
+    if (patientCode.isNotEmpty) {
+      // TextStorage cachedRecord = TextStorage(
+      //   fileName: 'JKJC',
+      //   directory: "patient/$patientCode",
+      // );
+      String? value = Store.resident.residentMedicalData;
+      print('🍖');
+      print(value);
+      print('🍖');
       if (value == null) {
         diagnosisDataValue = {};
         return;
@@ -126,6 +147,8 @@ class MedicalController extends FControllerBase {
       fileName: 'JKJC',
       directory: "patient/$patientCode",
     );
+
+    Store.resident.handleSaveMedicalData(jsonEncode(diagnosisDataValue));
     return cachedRecord.save(jsonEncode(diagnosisDataValue));
   }
 

+ 0 - 1
lib/pages/medical/widgets/body_temperature.dart

@@ -63,7 +63,6 @@ class _ExamBodyTemperatureState extends State<BodyTemperature> {
   }
 
   Future<void> initTemperature() async {
-    await Future.delayed(const Duration(milliseconds: 800));
     await controller.readCachedRecord();
     _value = controller.diagnosisDataValue['Temp']?['Temperature'] ?? '';
 

+ 0 - 1
lib/pages/medical/widgets/bool_oxygen.dart

@@ -65,7 +65,6 @@ class _ExamBloodOxygenState extends State<BloodOxygen> {
   }
 
   Future<void> initData() async {
-    await Future.delayed(const Duration(milliseconds: 800));
     await controller.readCachedRecord();
 
     setState(() {

+ 0 - 1
lib/pages/medical/widgets/heart_rate.dart

@@ -117,7 +117,6 @@ class _HeartRateState extends State<HeartRate> {
   }
 
   Future<void> initData() async {
-    // await Future.delayed(const Duration(milliseconds: 800));
     await controller.readCachedRecord();
     if (controller.diagnosisDataValue['Heart'] == null) {
       controller.diagnosisDataValue['Heart'] = {};

+ 31 - 0
lib/store/modules/resident.dart

@@ -0,0 +1,31 @@
+import 'package:vitalapp/store/defines.dart';
+import 'package:vitalapp/store/store.dart';
+
+class ResidentState extends StateModuleBase {
+  String? _residentMedicalData;
+
+  /// 居民检测数据
+  String? get residentMedicalData => _residentMedicalData;
+
+  /// 处理居民检测数据缓存
+  Future<void> handleSaveMedicalData(
+    String residentMedicalData,
+  ) async {
+    _residentMedicalData = residentMedicalData;
+    await Store.persistent();
+  }
+
+  @override
+  Future<void> acceptPersistenceJson(Map<String, dynamic> map) async {
+    // key对应值不为空时,给相应字段赋值
+    map.pickPersistentProp(
+        'residentMedicalData', (x) => _residentMedicalData = x);
+  }
+
+  @override
+  Map<String, dynamic> toPersistenceJson() {
+    return {
+      "residentMedicalData": residentMedicalData,
+    };
+  }
+}

+ 5 - 0
lib/store/store.dart

@@ -6,6 +6,7 @@ import 'package:fis_common/helpers/encrypt.dart';
 import 'package:fis_common/logger/logger.dart';
 import 'package:flutter/foundation.dart';
 import 'package:get/get.dart';
+import 'package:vitalapp/store/modules/resident.dart';
 import 'package:vitalapp/store/modules/user.dart';
 
 import '../architecture/storage/text_storage.dart';
@@ -28,6 +29,9 @@ class Store implements PersistentalbeState {
   /// 用户状态
   static UserState get user => _findModule<UserState>();
 
+  /// 居民检测状态
+  static ResidentState get resident => _findModule<ResidentState>();
+
   /// 全局单例
   static Store get ins => Get.find();
 
@@ -53,6 +57,7 @@ class Store implements PersistentalbeState {
     // 注册状态模块
     _regModuleSync(AppState());
     _regModuleSync(UserState());
+    _regModuleSync(ResidentState());
 
     // 加载持久化缓存
     await instance._loadPersistenceData();