0

我有一个简单的图表,其中 x 轴为字符串,y 轴为 int,但我的值太长 10000 我需要将其显示为 10k

我的代码

     Container(
          height: MediaQuery.of(context).size.height * 0.25,
          child: SfCartesianChart(
              enableAxisAnimation: true,
              primaryXAxis: CategoryAxis(
                  majorGridLines: MajorGridLines(width: 0),
                  //Hide the axis line of x-axis
                  axisLine: AxisLine(width: 0),
                  interval: 1),
              primaryYAxis: NumericAxis(
                minimum: 0, maximum: highSale,
                interval: highSale < 200 ? 100 : 2000,
                majorGridLines: MajorGridLines(width: 0),
                //Hide the axis line of x-axis
                axisLine: AxisLine(width: 0),
              ),
              tooltipBehavior: _tooltip,
              plotAreaBorderWidth: 0,
              legend: Legend(isVisible: false),
              series: <ChartSeries<_ChartData, String>>[
                ColumnSeries<_ChartData, String>(
                    dataSource: weekly
                        ? data
                        : yearly
                            ? dataMonth
                            : monthly
                                ? dataDaily
                                : daily
                                    ? dataDaily
                                    : [],
                    xValueMapper: (_ChartData data, _) => data.x,
                    yValueMapper: (_ChartData data, _) => data.y,
                    
                    pointColorMapper: (_ChartData data, _) => data.color,
                    name: 'Week',
                    color: weekly ? kPrimaryColor : Colors.red)
              ]),
        ),
        

在图像中,您可以看到它显示 36000 我需要将其显示为 36k 我尝试将其转换为 k 值,但问题出在 yValueMapper 上,它显示的字符串是不允许的。所以我在想也许有一些价值来展示映射器?像图将在值映射器上工作,并且文本会有所不同。

在此处输入图像描述

4

2 回答 2

2

上面的答案是正确的但是你需要格式化主轴

像这样

  primaryYAxis: NumericAxis(
    numberFormat: NumberFormat.compact(),
  )
于 2021-11-28T23:10:43.087 回答
0

您可以使用包中的NumberFormatintl

像这样:

import 'package:intl/intl.dart';

void main() {
  final number = NumberFormat.compact().format(10000);

  print(number); // 10k
}
于 2021-11-26T16:11:59.320 回答