abstract.dart 682 B

123456789101112131415161718192021222324252627282930313233
  1. import 'package:fis_measure/utils/number.dart';
  2. import 'package:vid/us/vid_us_unit.dart';
  3. abstract class UnitMapBase {
  4. Map<VidUsUnit, double>? _map;
  5. final VidUsUnit unit;
  6. UnitMapBase(this.unit) {
  7. initMap();
  8. }
  9. Map<VidUsUnit, double> get map {
  10. _map ??= <VidUsUnit, double>{};
  11. return _map!;
  12. }
  13. void initMap();
  14. void add(VidUsUnit target, double scale) {
  15. map[target] = scale;
  16. }
  17. double convert(VidUsUnit target, double value) {
  18. if (target == unit) return value;
  19. if (map.containsKey(target)) {
  20. final scale = map[target]!;
  21. final result = NumUtil.roundDouble(value / scale, 2);
  22. return result;
  23. }
  24. return value;
  25. }
  26. }