unit_desc.dart 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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. //Length
  40. _add(VidUsUnit.cm);
  41. _add(VidUsUnit.mm);
  42. _add(VidUsUnit.inch, 'in');
  43. _add(VidUsUnit.ft);
  44. //Time
  45. _add(VidUsUnit.s);
  46. _add(VidUsUnit.minute, 'min');
  47. _add(VidUsUnit.hour, 'h');
  48. _add(VidUsUnit.day, 'Day');
  49. _add(VidUsUnit.week, 'Week');
  50. _add(VidUsUnit.week_day, 'WeekDay');
  51. _add(VidUsUnit.Tick, '');
  52. _add(VidUsUnit.msec, 'ms');
  53. //Angle
  54. _add(VidUsUnit.degree, '° ');
  55. _add(VidUsUnit.radian, 'rad');
  56. //Weight
  57. _add(VidUsUnit.g);
  58. _add(VidUsUnit.mg);
  59. _add(VidUsUnit.ng);
  60. _add(VidUsUnit.kg);
  61. _add(VidUsUnit.oz);
  62. _add(VidUsUnit.lb);
  63. //Area
  64. _add(VidUsUnit.cm2, 'cm²');
  65. _add(VidUsUnit.mm2, 'mm²');
  66. _add(VidUsUnit.m2, 'm²');
  67. //Volumn
  68. _add(VidUsUnit.cm3, 'cm³');
  69. _add(VidUsUnit.mm3, 'cm³');
  70. _add(VidUsUnit.ml);
  71. _add(VidUsUnit.L);
  72. //Velocity
  73. _add(VidUsUnit.cms, 'cm/s');
  74. _add(VidUsUnit.mms, 'mm/s');
  75. _add(VidUsUnit.ms, 'm/s');
  76. //Acceleration
  77. _add(VidUsUnit.cms2, 'cm/s²');
  78. _add(VidUsUnit.mms2, 'mm/s²');
  79. //Flow
  80. _add(VidUsUnit.cm3s, 'cm³/s');
  81. _add(VidUsUnit.mls, 'ml/s');
  82. _add(VidUsUnit.mlmin, 'ml/min');
  83. _add(VidUsUnit.Lmin, 'L/min');
  84. //Density
  85. _add(VidUsUnit.gcm3, 'g/cm³');
  86. _add(VidUsUnit.gml, 'g/ml');
  87. _add(VidUsUnit.ngml, 'ng/ml');
  88. //Pressure
  89. _add(VidUsUnit.mmHg);
  90. //Voltage
  91. _add(VidUsUnit.mV);
  92. //Frequency
  93. _add(VidUsUnit.Hz);
  94. _add(VidUsUnit.KHz, 'kHz');
  95. _add(VidUsUnit.HR, 'bpm');
  96. //SI
  97. _add(VidUsUnit.cm3m2, 'cm³/m²');
  98. _add(VidUsUnit.mlm2, 'ml/m²');
  99. //CI
  100. _add(VidUsUnit.cm3sm2, 'cm³/s/m²');
  101. _add(VidUsUnit.mlsm2, 'ml/s/m²');
  102. _add(VidUsUnit.cm3minm2, 'cm³/min/m²');
  103. _add(VidUsUnit.mlminm2, 'ml/min/m²');
  104. _add(VidUsUnit.Lminm2, 'L/min.m²');
  105. _add(VidUsUnit.circs, 'circ/s');
  106. //CO
  107. _add(VidUsUnit.mlbeat, 'ml/beat');
  108. //PWV
  109. _add(VidUsUnit.mm2pa, 'mm²/Pa');
  110. _add(VidUsUnit.d1mpa, '1/MPa');
  111. _add(VidUsUnit.kpa, 'kPa');
  112. _add(VidUsUnit.mmHgs, 'mmHg/s');
  113. _add(VidUsUnit.gm2, 'g/m²');
  114. //AVA Index
  115. _add(VidUsUnit.cm2m2, 'cm²/m²');
  116. //TAM/MAM
  117. //Temperature
  118. //Resistance
  119. }
  120. }