uom

Units of measurement library for Dart with dimensions, converters, formatting, and derived units.

Features

  • Base and derived dimensions
  • Linear and affine unit conversion
  • Measure formatting with configurable defaults per dimension
  • Built-in units for length, mass, time, temperature, area, volume, pressure, energy, density, and more

Installation

Add the package to your pubspec.yaml:

dependencies:
  uom: ^0.0.1

Then run:

dart pub get

Usage

Convert measures

import 'package:uom/uom.dart';

void main() {
  final distance = 1500.asMeasure(Length.meter);
  final km = distance.to(Length.kmeter);

  print(km); // 1.5 km
}

Work with prefixes

import 'package:uom/uom.dart';

void main() {
  final millimeter = Length.meter.group(Si.milli);

  print(millimeter); // mm
  print(1.asMeasure(Length.kmeter).to(Length.meter)); // 1000 m
}

Work with derived units

import 'package:uom/uom.dart';

void main() {
  final speed = 100.asMeasure(Length.kmeter) / 2.asMeasure(Time.hour);

  print(speed); // 50 km/h
}

Operate on compatible measures

import 'package:uom/uom.dart';

void main() {
  final a = 1.asMeasure(Length.meter);
  final b = 25.asMeasure(Length.cmeter);

  print(a + b); // 1.25 m
  print(a - b); // 0.75 m
}

Compare measures

import 'package:uom/uom.dart';

void main() {
  final a = 1000.asMeasure(Length.meter);
  final b = 1.asMeasure(Length.kmeter);

  print(a == b); // true
  print(a >= b); // true
}

Convert temperatures

import 'package:uom/uom.dart';

void main() {
  final temp = 25.asMeasure(Temperature.celsius);

  print(temp.to(Temperature.kelvin)); // 298.2K
}

Configure formatting by dimension

import 'package:uom/uom.dart';

void main() {
  MeasureFormatRegistry.register<Length>(
    const MeasureFormat(fractionDigits: 3),
  );

  print(1.23456.asMeasure(Length.meter)); // 1.235 m
}

Included dimensions

  • Length
  • Mass
  • Time
  • Temperature
  • Area
  • Volume
  • Velocity
  • Acceleration
  • Force
  • Pressure
  • Energy
  • Density
  • Frequency
  • Data and data rate
  • Electric current
  • Amount
  • Luminous intensity

License

See LICENSE.