melon.yin преди 2 години
родител
ревизия
fd2630e8bc

+ 28 - 0
lib/process/unit/convert/abstract.dart

@@ -0,0 +1,28 @@
+import 'package:vid/us/vid_us_unit.dart';
+
+abstract class UnitMapBase {
+  Map<VidUsUnit, double>? _map;
+  final VidUsUnit unit;
+
+  UnitMapBase(this.unit);
+
+  Map<VidUsUnit, double> get map {
+    _map ??= <VidUsUnit, double>{};
+    return _map!;
+  }
+
+  void initMap();
+
+  void add(VidUsUnit target, double scale) {
+    map[target] = scale;
+  }
+
+  double convert(VidUsUnit target, double value) {
+    if (map.containsKey(target)) {
+      final scale = map[target]!;
+      final result = value / scale;
+      return result;
+    }
+    return value;
+  }
+}

+ 11 - 0
lib/process/unit/convert/convert.dart

@@ -0,0 +1,11 @@
+import 'package:vid/us/vid_us_unit.dart';
+
+import 'abstract.dart';
+
+class UnitConverter {
+  static final _map = <VidUsUnit, UnitMapBase>{};
+
+  double convert(double value) {
+    return value;
+  }
+}

+ 12 - 0
lib/process/unit/convert/distance.dart

@@ -0,0 +1,12 @@
+import 'package:vid/us/vid_us_unit.dart';
+
+import 'abstract.dart';
+
+class DistanceMap extends UnitMapBase {
+  DistanceMap() : super(VidUsUnit.cm);
+
+  @override
+  void initMap() {
+    add(VidUsUnit.mm, 0.1);
+  }
+}

+ 0 - 0
lib/process/unit/extensions.dart


+ 9 - 0
lib/utils/unit_ext.dart

@@ -0,0 +1,9 @@
+import 'package:vid/us/vid_us_unit.dart';
+
+extension UnitExt on VidUsUnit {
+  // static final _map=
+}
+
+class UnitConverter {
+  //
+}