Browse Source

UnitDescriptionMap

melon.yin 2 years ago
parent
commit
68267e69b4
2 changed files with 135 additions and 2 deletions
  1. 129 0
      lib/values/unit_desc.dart
  2. 6 2
      test/widget_test.dart

+ 129 - 0
lib/values/unit_desc.dart

@@ -0,0 +1,129 @@
+import 'package:vid/us/vid_us_unit.dart';
+
+class UnitDescriptionMap {
+  static UnitDescriptionMap? _instance;
+  static UnitDescriptionMap get _singleton {
+    if (_instance == null) {
+      _instance = UnitDescriptionMap._();
+      _instance!._initMap();
+    }
+    return _instance!;
+  }
+
+  final Map<VidUsUnit, String> _map = {};
+  UnitDescriptionMap._();
+
+  /// 获取描述
+  ///
+  /// [unit] flutter_vid 内置枚举
+  static String getDesc(VidUsUnit unit) {
+    return _singleton._getDesc(unit);
+  }
+
+  /// 获取描述
+  ///
+  /// [value] vinno单位通用枚举值
+  static String getDescByInt(int value) {
+    final unit = VidUsUnitMap.getUnit(value);
+    return _singleton._getDesc(unit);
+  }
+
+  String _getDesc(VidUsUnit unit) {
+    if (_map.containsKey(unit)) {
+      return _map[unit]!;
+    }
+    return unit.name;
+  }
+
+  void _add(VidUsUnit unit, [String? description]) {
+    final desc = description ?? unit.name;
+    _map[unit] = desc;
+  }
+
+  void _initMap() {
+    _add(VidUsUnit.None, '');
+    _add(VidUsUnit.percent, '%');
+    //Length
+    _add(VidUsUnit.cm);
+    _add(VidUsUnit.mm);
+    _add(VidUsUnit.inch, 'in');
+    _add(VidUsUnit.ft);
+    //Time
+    _add(VidUsUnit.s);
+    _add(VidUsUnit.minute, 'min');
+    _add(VidUsUnit.hour, 'h');
+    _add(VidUsUnit.day, 'Day');
+    _add(VidUsUnit.week, 'Week');
+    _add(VidUsUnit.week_day, 'WeekDay');
+    _add(VidUsUnit.Tick, '');
+    _add(VidUsUnit.msec, 'ms');
+    //Angle
+    _add(VidUsUnit.degree, '° ');
+    _add(VidUsUnit.radian, 'rad');
+    //Weight
+    _add(VidUsUnit.g);
+    _add(VidUsUnit.mg);
+    _add(VidUsUnit.ng);
+    _add(VidUsUnit.kg);
+    _add(VidUsUnit.oz);
+    _add(VidUsUnit.lb);
+    //Area
+    _add(VidUsUnit.cm2, 'cm²');
+    _add(VidUsUnit.mm2, 'mm²');
+    _add(VidUsUnit.m2, 'm²');
+    //Volumn
+    _add(VidUsUnit.cm3, 'cm³');
+    _add(VidUsUnit.mm3, 'cm³');
+    _add(VidUsUnit.ml);
+    _add(VidUsUnit.L);
+    //Velocity
+    _add(VidUsUnit.cms, 'cm/s');
+    _add(VidUsUnit.mms, 'mm/s');
+    _add(VidUsUnit.ms, 'm/s');
+    //Acceleration
+    _add(VidUsUnit.cms2, 'cm/s²');
+    _add(VidUsUnit.mms2, 'mm/s²');
+    //Flow
+    _add(VidUsUnit.cm3s, 'cm³/s');
+    _add(VidUsUnit.mls, 'ml/s');
+    _add(VidUsUnit.mlmin, 'ml/min');
+    _add(VidUsUnit.Lmin, 'L/min');
+    //Density
+    _add(VidUsUnit.gcm3, 'g/cm³');
+    _add(VidUsUnit.gml, 'g/ml');
+    _add(VidUsUnit.ngml, 'ng/ml');
+    //Pressure
+    _add(VidUsUnit.mmHg);
+    //Voltage
+    _add(VidUsUnit.mV);
+    //Frequency
+    _add(VidUsUnit.Hz);
+    _add(VidUsUnit.KHz, 'kHz');
+    _add(VidUsUnit.HR, 'bpm');
+    //SI
+    _add(VidUsUnit.cm3m2, 'cm³/m²');
+    _add(VidUsUnit.mlm2, 'ml/m²');
+    //CI
+    _add(VidUsUnit.cm3sm2, 'cm³/s/m²');
+    _add(VidUsUnit.mlsm2, 'ml/s/m²');
+    _add(VidUsUnit.cm3minm2, 'cm³/min/m²');
+    _add(VidUsUnit.mlminm2, 'ml/min/m²');
+    _add(VidUsUnit.Lminm2, 'L/min.m²');
+    _add(VidUsUnit.circs, 'circ/s');
+    //CO
+    _add(VidUsUnit.mlbeat, 'ml/beat');
+    //PWV
+    _add(VidUsUnit.mm2pa, 'mm²/Pa');
+    _add(VidUsUnit.d1mpa, '1/MPa');
+    _add(VidUsUnit.kpa, 'kPa');
+    _add(VidUsUnit.mmHgs, 'mmHg/s');
+    _add(VidUsUnit.gm2, 'g/m²');
+    //AVA Index
+    _add(VidUsUnit.cm2m2, 'cm²/m²');
+    //TAM/MAM
+
+    //Temperature
+
+    //Resistance
+  }
+}

+ 6 - 2
test/widget_test.dart

@@ -7,11 +7,15 @@
 import 'dart:math' as math;
 import 'package:fis_measure/interfaces/date_types/point.dart';
 import 'package:fis_measure/interfaces/date_types/skew_transform.dart';
-import 'package:fis_measure/process/workspace/measure_controller.dart';
-import 'package:flutter/material.dart';
+import 'package:fis_measure/values/unit_desc.dart';
 import 'package:flutter_test/flutter_test.dart';
+import 'package:vid/us/vid_us_unit.dart';
 
 void main() {
+  test('Unit Description', () {
+    print(UnitDescriptionMap.getDesc(VidUsUnit.HR));
+    print(UnitDescriptionMap.getDescByInt(60));
+  });
   testWidgets('Counter increments smoke test', (WidgetTester tester) async {
     // Build our app and trigger a frame.
   });