如何在Flutter中自定义条形图每个条形的颜色?

时间:2019-06-13 09:38:34

标签: charts flutter dart

我是扑朔迷离的新手,并尝试构建具有不同颜色的条形图。我使用谷歌提供的图表依赖。

https://google.github.io/charts/flutter/gallery.html

但是,我发现我只能更改所有条形的颜色。无论如何,我可以自定义一个特定条形的颜色吗? 我已经在网上搜索过,没有发布此类信息。

2 个答案:

答案 0 :(得分:0)

colorFn拥有一个Series属性,您可以通过它指定笔划。

检出this

希望有帮助!

答案 1 :(得分:0)

为了扩展Hemanth所指的内容,colorFn是一个带有返回颜色的函数的属性。

因此,如果您执行以下操作:

colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault

您将为系列中的每个细分返回相同的颜色。

要为系列中的各个细分设置不同的颜色,您可以执行以下操作:

class ExampleSegment {
  final String segment;
  final int size;

  ExampleSegment(this.segment, this.size);
}

static List<charts.Series<ExampleSegment, String>> _createSampleData() {
  final blue = charts.MaterialPalette.blue.makeShades(2);
  final red = charts.MaterialPalette.red.makeShades(2);
  final green = charts.MaterialPalette.green.makeShades(2);

  final data = [
    new ExampleSegment('First', 100),
    new ExampleSegment('Second', 100),
    new ExampleSegment('Third', 100),
    new ExampleSegment('Fourth', 100),
  ];

  return [
    new charts.Series<ExampleSegment, String>(
        id: 'Segments',
        domainFn: (ExampleSegment segment, _) => segment.segment,
        measureFn: (ExampleSegment segment, _) => segment.size,
        data: data,
        colorFn: (ExampleSegment segment, _) {
          switch (segment.segment) {
            case "First":
              {
                return blue[1];
              }

            case "Second":
              {
                return red[1];
              }

            case "Third":
              {
                return green[1];
              }

            case "Fourth":
              {
                return blue[0];
              }

            default:
              {
                return red[0];
              }
          }
        }
      ),
  ];
}