123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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(LengthMapCM());
- _add(LengthMapMM());
- _add(TimeMap());
- _add(SpeedMapCM());
- _add(SpeedMapMM());
- _add(AreaMap());
- _add(VolumeMap());
- _add(WeightMap());
- _add(PressureMap());
- }
- void _add(UnitMapBase item) {
- _map[item.unit] = item;
- }
- }
|