Browse Source

0016796: 【健康检测】【腰臀比】腰臀比和BMI应限制输入0,体质指数和腰臀比会显示NAN

Melon 1 year ago
parent
commit
989781f82a
2 changed files with 13 additions and 0 deletions
  1. 4 0
      lib/pages/medical/states/waist.dart
  2. 9 0
      lib/pages/medical/widgets/body_bmi.dart

+ 4 - 0
lib/pages/medical/states/waist.dart

@@ -19,6 +19,10 @@ class WaistState {
     if (waistline == null || hipline == null) {
       return null;
     }
+    if (hipline == 0) {
+      // 0不可被除
+      return 0;
+    }
     final val = waistline! / hipline!;
     return double.parse(val.toStringAsFixed(2));
   }

+ 9 - 0
lib/pages/medical/widgets/body_bmi.dart

@@ -1,3 +1,4 @@
+import 'dart:math' as math;
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:vitalapp/managers/device_controller_manager.dart';
@@ -257,6 +258,14 @@ class _ExamBodyWeightState extends State<BodyWeight> {
 
   void getBmi() {
     if (_weight.isNotEmpty && _height.isNotEmpty) {
+      final w = double.parse(_weight);
+      final h = double.parse(_height) / 100.0;
+      if (h == 0) {
+        // 0不能被除
+        _bmi = "0";
+      } else {
+        _bmi = (w / math.pow(h, 2)).toStringAsFixed(2);
+      }
       _bmi = (double.parse(_weight) /
               ((double.parse(_height) / 100) * (double.parse(_height) / 100)))
           .toStringAsFixed(2);