toString method
Returns a string representation of this quantity.
By default, formats as "[value]\u00A0[unit_symbol]" (e.g., "10.5\u00A0m"),
using Dart-native number formatting (dot decimal, no thousands separator).
Parameters:
-
targetUnit: If provided, the value is converted to this unit before formatting. The displayed symbol will be that oftargetUnit. -
format: A QuantityFormat controlling number formatting, locale, fraction digits, unit symbol visibility, and separator. Defaults to QuantityFormat.invariant.
Examples:
1.km.toString(targetUnit: LengthUnit.meter)
// "1000.0 m"
1234.56.m.toString(format: QuantityFormat.forLocale('de_DE', fractionDigits: 2))
// "1.234,56 m"
10.m.toString(format: QuantityFormat.valueOnly)
// "10.0"
Implementation
@override
String toString({
T? targetUnit,
QuantityFormat format = QuantityFormat.invariant,
}) {
var valueToFormat = _value;
var unitToDisplay = _unit;
if (targetUnit != null && targetUnit != _unit) {
valueToFormat = getValue(targetUnit);
unitToDisplay = targetUnit;
}
String formattedValue;
final nf = format.effectiveNumberFormat;
if (nf != null) {
formattedValue = nf.format(valueToFormat);
} else if (format.fractionDigits != null) {
formattedValue = valueToFormat.toStringAsFixed(format.fractionDigits!);
} else {
formattedValue = valueToFormat.toString();
}
if (format.showUnitSymbol) {
return '$formattedValue${format.unitSymbolSeparator}${unitToDisplay.symbol}';
}
return formattedValue;
}