nameFor method
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.
}