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 _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, '%'); _add(VidUsUnit.fraction, ' '); //Length _add(VidUsUnit.cm); _add(VidUsUnit.mm); _add(VidUsUnit.um, "μm"); _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, 'g'); _add(VidUsUnit.mg, 'mg'); _add(VidUsUnit.ng, 'ng'); _add(VidUsUnit.kg, '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, 'mm³'); _add(VidUsUnit.ml, 'ml'); _add(VidUsUnit.L, 'L'); _add(VidUsUnit.mil, 'μ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.mlmincm2, 'ml/min.cm²'); _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 } }