format method
Formats value into a display string.
Implementation
@override
String format(num value) {
final integer = _checkedInteger(value, 'Must be a finite integer.');
if (integer == 0) return digitSymbols[0];
if (integer < 0) return '负${format(-integer)}';
final sections = <int>[];
var rest = integer;
while (rest > 0) {
sections.add(rest % 10000);
rest ~/= 10000;
}
if (sections.length > sectionUnits.length) {
throw ArgumentError.value(
value,
'value',
'Exceeds supported Chinese section units.',
);
}
final buffer = StringBuffer();
var zeroPending = false;
for (var index = sections.length - 1; index >= 0; index -= 1) {
final section = sections[index];
if (section == 0) {
if (buffer.isNotEmpty) zeroPending = true;
continue;
}
if (buffer.isNotEmpty && (zeroPending || section < 1000)) {
buffer.write(digitSymbols[0]);
}
final omitLeadingOne =
omitLeadingOneForTen && buffer.isEmpty && section < 20;
buffer
..write(_formatSection(section, omitLeadingOneForTen: omitLeadingOne))
..write(sectionUnits[index]);
zeroPending = false;
}
return buffer.toString();
}