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.