printOn method

  1. @override
void printOn(
  1. T object,
  2. StringBuffer buffer
)
override

Prints the object into buffer.

Implementation

@override
void printOn(T object, StringBuffer buffer) {
  final value = object.toDouble();
  if (value.isInfinite || value.isNaN) {
    _unit.printOn(value, buffer);
  } else {
    final index = _getExponent(value) + unitOffset;
    final unitIndex = index.clamp(0, units.length - 1);
    final unitString = units[unitIndex];
    final unitExponent = unitIndex - unitOffset;
    final mantissa = value / unitBase.toDouble().pow(unitExponent);
    if (unitString.isNotEmpty && unitPrefix) {
      buffer.write(unitString);
      buffer.write(unitSeparator);
    }
    final printer = unitIndex == unitOffset ? _unit : _scaled;
    printer.printOn(mantissa, buffer);
    if (unitString.isNotEmpty && !unitPrefix) {
      buffer.write(unitSeparator);
      buffer.write(unitString);
    }
  }
}