unit_desc.dart 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import 'package:vid/us/vid_us_unit.dart';
  2. class UnitDescriptionMap {
  3. static UnitDescriptionMap? _instance;
  4. static UnitDescriptionMap get _singleton {
  5. if (_instance == null) {
  6. _instance = UnitDescriptionMap._();
  7. _instance!._initMap();
  8. }
  9. return _instance!;
  10. }
  11. final Map<VidUsUnit, String> _map = {};
  12. UnitDescriptionMap._();
  13. /// 获取描述
  14. ///
  15. /// [unit] flutter_vid 内置枚举
  16. static String getDesc(VidUsUnit unit) {
  17. return _singleton._getDesc(unit);
  18. }
  19. /// 获取描述
  20. ///
  21. /// [value] vinno单位通用枚举值
  22. static String getDescByInt(int value) {
  23. final unit = VidUsUnitMap.getUnit(value);
  24. return _singleton._getDesc(unit);
  25. }
  26. String _getDesc(VidUsUnit unit) {
  27. if (_map.containsKey(unit)) {
  28. return _map[unit]!;
  29. }
  30. return unit.name;
  31. }
  32. void _add(VidUsUnit unit, [String? description]) {
  33. final desc = description ?? unit.name;
  34. _map[unit] = desc;
  35. }
  36. void _initMap() {
  37. _add(VidUsUnit.None, '');
  38. _add(VidUsUnit.percent, '%');
  39. _add(VidUsUnit.fraction, ' ');
  40. //Length
  41. _add(VidUsUnit.cm);
  42. _add(VidUsUnit.mm);
  43. _add(VidUsUnit.um, "μm");
  44. _add(VidUsUnit.inch, 'in');
  45. _add(VidUsUnit.ft);
  46. //Time
  47. _add(VidUsUnit.s);
  48. _add(VidUsUnit.minute, 'min');
  49. _add(VidUsUnit.hour, 'h');
  50. _add(VidUsUnit.day, 'Day');
  51. _add(VidUsUnit.week, 'Week');
  52. _add(VidUsUnit.week_day, 'WeekDay');
  53. _add(VidUsUnit.Tick, '');
  54. _add(VidUsUnit.msec, 'ms');
  55. //Angle
  56. _add(VidUsUnit.degree, '° ');
  57. _add(VidUsUnit.radian, 'rad');
  58. //Weight
  59. _add(VidUsUnit.g, 'g');
  60. _add(VidUsUnit.mg, 'mg');
  61. _add(VidUsUnit.ng, 'ng');
  62. _add(VidUsUnit.kg, 'kg');
  63. _add(VidUsUnit.oz);
  64. _add(VidUsUnit.lb);
  65. //Area
  66. _add(VidUsUnit.cm2, 'cm²');
  67. _add(VidUsUnit.mm2, 'mm²');
  68. _add(VidUsUnit.m2, 'm²');
  69. //Volumn
  70. _add(VidUsUnit.cm3, 'cm³');
  71. _add(VidUsUnit.mm3, 'mm³');
  72. _add(VidUsUnit.ml, 'ml');
  73. _add(VidUsUnit.L, 'L');
  74. _add(VidUsUnit.mil, 'μl');
  75. //Velocity
  76. _add(VidUsUnit.cms, 'cm/s');
  77. _add(VidUsUnit.mms, 'mm/s');
  78. _add(VidUsUnit.ms, 'm/s');
  79. //Acceleration
  80. _add(VidUsUnit.cms2, 'cm/s²');
  81. _add(VidUsUnit.mms2, 'mm/s²');
  82. //Flow
  83. _add(VidUsUnit.cm3s, 'cm³/s');
  84. _add(VidUsUnit.mls, 'ml/s');
  85. _add(VidUsUnit.mlmin, 'ml/min');
  86. _add(VidUsUnit.Lmin, 'L/min');
  87. //Density
  88. _add(VidUsUnit.gcm3, 'g/cm³');
  89. _add(VidUsUnit.gml, 'g/ml');
  90. _add(VidUsUnit.ngml, 'ng/ml');
  91. //Pressure
  92. _add(VidUsUnit.mmHg);
  93. //Voltage
  94. _add(VidUsUnit.mV);
  95. //Frequency
  96. _add(VidUsUnit.Hz);
  97. _add(VidUsUnit.KHz, 'kHz');
  98. _add(VidUsUnit.HR, 'bpm');
  99. //SI
  100. _add(VidUsUnit.cm3m2, 'cm³/m²');
  101. _add(VidUsUnit.mlm2, 'ml/m²');
  102. //CI
  103. _add(VidUsUnit.cm3sm2, 'cm³/s/m²');
  104. _add(VidUsUnit.mlsm2, 'ml/s/m²');
  105. _add(VidUsUnit.cm3minm2, 'cm³/min/m²');
  106. _add(VidUsUnit.mlminm2, 'ml/min/m²');
  107. _add(VidUsUnit.Lminm2, 'L/min.m²');
  108. _add(VidUsUnit.mlmincm2, 'ml/min.cm²');
  109. _add(VidUsUnit.circs, 'circ/s');
  110. //CO
  111. _add(VidUsUnit.mlbeat, 'ml/beat');
  112. //PWV
  113. _add(VidUsUnit.mm2pa, 'mm²/Pa');
  114. _add(VidUsUnit.d1mpa, '1/MPa');
  115. _add(VidUsUnit.kpa, 'kPa');
  116. _add(VidUsUnit.mmHgs, 'mmHg/s');
  117. _add(VidUsUnit.gm2, 'g/m²');
  118. //AVA Index
  119. _add(VidUsUnit.cm2m2, 'cm²/m²');
  120. //TAM/MAM
  121. //Temperature
  122. //Resistance
  123. }
  124. }