12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import 'package:fis_measure/process/unit/convert/length.dart';
- import 'package:fis_measure/process/unit/convert/speed.dart';
- import 'package:fis_measure/process/unit/convert/area.dart';
- import 'package:fis_measure/process/unit/convert/time.dart';
- import 'package:vid/us/vid_us_unit.dart';
- import 'abstract.dart';
- import 'volume.dart';
- import 'pressure.dart';
- import 'weight.dart';
- /// 单位数值转换器
- class UnitValueConverter {
- static UnitValueConverter? _ins;
- static UnitValueConverter get _singleton {
- if (_ins == null) {
- _ins = UnitValueConverter._();
- _ins!._init();
- }
- return _ins!;
- }
- UnitValueConverter._();
- final _map = <VidUsUnit, UnitMapBase>{};
- /// 转换为目标单位的值
- ///
- /// [unit] 当前单位
- ///
- /// [targetUnit] 目标单位
- ///
- /// [value] 当前单位值
- static double convert(VidUsUnit unit, VidUsUnit targetUnit, double value) {
- final result = _singleton._findUnitExt(unit)?.convert(targetUnit, value);
- return result ?? value;
- }
- UnitMapBase? _findUnitExt(VidUsUnit unit) {
- if (_map.containsKey(unit)) {
- return _map[unit];
- }
- return null;
- }
- void _init() {
- _add(LengthMap());
- _add(TimeMap());
- _add(SpeedMap());
- _add(AreaMap());
- _add(VolumeMap());
- _add(WeightMap());
- _add(PressureMap());
- }
- void _add(UnitMapBase item) {
- _map[item.unit] = item;
- }
- }
|