waist.dart 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // ignore_for_file: constant_identifier_names
  2. import 'package:get/get.dart';
  3. import 'package:vitalapp/architecture/utils/nums.dart';
  4. import 'package:vitalapp/pages/medical/controller.dart';
  5. import 'package:vitalapp/pages/medical/states/waist.dart';
  6. // 主项
  7. const String WHB = "WHB";
  8. // 子项
  9. const String WHR = "WHR";
  10. const String WAISTLINE = "WAISTLINE";
  11. const String HIPLINE = "HIPLINE";
  12. /// 腰臀比
  13. class WaistDeviceController extends GetxController {
  14. final state = WaistState();
  15. final medicalController = Get.find<MedicalController>();
  16. @override
  17. void onReady() {
  18. super.onReady();
  19. _loadCacheData();
  20. }
  21. /// 腰围变更
  22. void onWaistlineChanged(double? value) {
  23. if (value != null) {
  24. state.waistline = double.parse(value.toStringAsFixed(2));
  25. } else {
  26. state.waistline = null;
  27. }
  28. saveExamData();
  29. }
  30. /// 臀围变更
  31. void onHiplineChanged(double? value) {
  32. if (value != null) {
  33. state.hipline = double.parse(value.toStringAsFixed(2));
  34. } else {
  35. state.hipline = null;
  36. }
  37. saveExamData();
  38. }
  39. /// 保存测量数据
  40. void saveExamData() {
  41. if (state.waistline == null && state.hipline == null) {
  42. // 都无值不可提交
  43. medicalController.diagnosisDataValue.remove(WHB);
  44. } else {
  45. medicalController.diagnosisDataValue[WHB] = {
  46. WAISTLINE: NumUtils.displayDouble(state.waistline),
  47. HIPLINE: NumUtils.displayDouble(state.hipline),
  48. WHR: NumUtils.displayDouble(state.whr),
  49. };
  50. }
  51. medicalController.saveCachedRecord();
  52. }
  53. /// 加载缓存数据
  54. void _loadCacheData() {
  55. /// 体检系统 基础检查的特殊处理
  56. final waistLine = medicalController.diagnosisDataValue[WAISTLINE];
  57. final hipLine = medicalController.diagnosisDataValue[HIPLINE];
  58. if (waistLine != null || hipLine != null) {
  59. state.waistline = double.tryParse(waistLine);
  60. state.hipline = double.tryParse(hipLine);
  61. return;
  62. }
  63. final jsonMap = medicalController.diagnosisDataValue[WHB];
  64. if (jsonMap != null) {
  65. final data = jsonMap as Map<String, dynamic>;
  66. if (data.containsKey(WAISTLINE)) {
  67. state.waistline = double.tryParse(data[WAISTLINE]);
  68. }
  69. if (data.containsKey(HIPLINE)) {
  70. state.hipline = double.tryParse(data[HIPLINE]);
  71. }
  72. }
  73. }
  74. }