我正在使用
syncfusion
图表,我需要以紧凑格式显示 Y
轴。默认情况下,Syncfusion 在 intl 的 NumberFormat 中提供一个参数以允许格式化。但是库中使用的紧凑数字符号如下,
COMPACT_DECIMAL_SHORT_PATTERN: const {
3: '0T',
4: '00T',
5: '0L',
6: '00L',
7: '0Cr',
8: '00Cr',
9: '000Cr',
10: '0TCr',
11: '00TCr',
12: '0LCr',
13: '00LCr',
14: '000LCr',
}
这里千显示为T,但我需要将其转换为
K
,我无法直接编辑输入符号的文件,因为部署是通过CI/CD管道进行的,该管道下载自己的pub缓存在每次部署时。我可以添加一个过程来用修改后的文件替换符号文件作为管道的一部分,但我不知道这是否是一个好的做法,或者可能会出现什么问题。
我正在考虑将整个intl包含在lib中,并解决它,任务本身似乎太复杂了,即使我这样做了,我也需要克隆和修改syncfusion。因为它需要来自 pub 缓存的 intl。
数字轴构造函数有一个选项来设置轴,axisLabelFormatter,
axisLabelFormatter: (AxisLabelRenderDetails args) {
NumberFormat numberFormat;
if (args.value < 100000) {
numberFormat = NumberFormat.compact();
} else {
numberFormat = NumberFormat.compact(locale: "en_IN");
}
var text = numberFormat.format(args.value);
return ChartAxisLabel(text, args.textStyle);
},
通过使用 numberFormat 属性,您可以根据所需区域将相应的语言环境传递给 NumberFormat 中的紧凑方法来实现上述要求。