nameFor method

String? nameFor(
  1. Unit unit
)

Returns the name for the specified unit or null if product unit.

Implementation

String? nameFor(Unit unit) {
  // Searches label database.
  var label = _unitToName[unit];
  if (label != null) return label;
  if (unit is BaseUnit) return unit.symbol;
  if (unit is AlternateUnit) return unit.symbol;
  if (unit is TransformedUnit) {
    var baseUnits = unit.standardUnit;
    var cvtr = unit.toStandardUnit();
    var result = StringBuffer();
    var baseUnitName = nameFor(baseUnits)!;

    if (baseUnitName.contains('ยท') ||
        baseUnitName.contains('*') ||
        baseUnitName.contains('/')) {
      // We could use parentheses whenever baseUnits is an
      // is ProductUnit, but most ProductUnits have aliases,
      // so we'd end up with a lot of unnecessary parentheses.
      result.write('($baseUnitName)');
    } else {
      result.write(baseUnitName);
    }
    if (cvtr is AddConverter) {
      result.write('+${cvtr.offset}');
    } else if (cvtr is RationalConverter) {
      var dividend = cvtr.factor.dividend;
      if (dividend != 1) {
        result.write('*$dividend');
      }
      var divisor = cvtr.factor.divisor;
      if (divisor != 1) {
        result.write('/$divisor');
      }
    } else if (cvtr is MultiplyConverter) {
      result.write('*${cvtr.factor}');
    } else {
      // Other converters.
      return '[$baseUnits?]';
    }
    return result.toString();
  }
  return null; // Product unit.
}