number_display 2.0.1 number_display: ^2.0.1 copied to clipboard
To display data in a width-limited component, this function will smartly help you to convert number to a certain chart length. To be simple, plain, flexible and accurate.
number_display #
Display number smartly within a certain length.
final display = createDisplay(length: 8);
display(-254623933.876) // result: -254.62M
To display data in a width-limited component, this function will smartly help you to convert number to a certain chart length. To be simple, plain, flexible and accurate, the conversion follow this rules:
- result chart length will never overflow length
- replace null, nan or infinity to placeholder
- use locale string with commas ( 1,234,222 ) as possible ( configurable )
- trim number with units ( 1.23k ) when length is limited
- convert scientific notation ( 1.23e+4 ) to friendly form
- no decimal trailing zeros
Usage #
In version 2.* we only export a createDisplay
function for users to custom their display
function. So the real display function has only one input: value
. This separates the configuration and usage, which is more simple and clear.
import 'package:number_display/number_display.dart';
final display = createDisplay(
length: 8,
decimal: 0,
);
print(display(data));
The complete configuration params are listed in the next section .
If the length overflow, the trimming rules in order are:
- omit the locale commas
- slice the decimal by the room left
- trim the integer with number units ( k, M, G, T, P )
- if the
length
is >= 5, any number can be trimmed within it. If it's less than 5 and input number is too long, display will throw an exception.
Conversion examples:
createDisplay();
null => ''
double.nan => ''
-123456789.123456789 => '-123.456M'
'123456' => '123,456'
-1.2345e+5 => '-123,450'
With some configs:
createDisplay(
comma: false,
placeholder: '--'
);
null => '--'
123456 => '123456'
Configurations #
length
( default: 9 )
The max length the result would be. length should no less then 5 so that any number can display ( say -123000 ) after trim.
decimal
( default: 2 )
The max decimal length. Note that this is only a constraint. The final precision will be calculated by length, and less than this param. There will be no decimal trailing zeros.
placeholder
( default: '' )
The result when the input is neither string nor number, or the input is NaN, Infinity or -Infinity. It will be sliced if longer than length param.
comma
( default: true )
Whether the locale string has commas ( 1,234,222 ), if there are rooms.