如何将不透明度应用于散点图抖动

时间:2020-09-13 14:39:24

标签: flutter dart

我正在使用charts_flutter绘制散点图。
到目前为止,这是我编写的相关代码:

class _VennState extends State<VennDiagramWidget> {
  List<charts.Series<VennCircle, int>> circlesList;

  static List<charts.Series<VennCircle, int>> _createRandomCircles() {
    final circles = [
      VennCircle('red', 1, 50, 0.8, 'Venn1', 15, 35),
      VennCircle('black', 2, 150, 0.5, 'Venn2', 18, 20),
      VennCircle('green', 3, 200, 1, 'Venn3', 25, 25),
    ];

    return [
      new charts.Series(
        id: 'circles',
        data: circles,
        domainFn: (VennCircle venn, _) => venn.x_value,
        measureFn: (VennCircle venn, _) => venn.y_value,
        colorFn: (VennCircle venn, _) {
          if (venn.circleColor == 'red') {
            return charts.MaterialPalette.red.shadeDefault;
          } else if (venn.circleColor == 'black') {
            return charts.MaterialPalette.black;
          }
          return charts.MaterialPalette.green.shadeDefault;
        },
        radiusPxFn: (VennCircle venn, _) => venn.circleSize,
        domainUpperBoundFn: (VennCircle venn, _) => 50,
        domainLowerBoundFn: (VennCircle venn, _) => 0,
        measureUpperBoundFn: (VennCircle venn, _) => 50,
        measureLowerBoundFn: (VennCircle venn, _) => 0,
      ),
    ];
  }

  scatterPlot() {
    return new charts.ScatterPlotChart(
      circlesList,
      animate: true,
      primaryMeasureAxis: new charts.NumericAxisSpec(
        showAxisLine: false,
        renderSpec: new charts.NoneRenderSpec(),
      ),
      domainAxis: new charts.NumericAxisSpec(
        showAxisLine: false,
        renderSpec: new charts.NoneRenderSpec(),
      ),
    );
  }

我找不到改变每个圆的不透明度的方法。 (每个圆圈的不透明度可以不同)
我遇到了这个Opacity widget,但我无法应用它-可能是因为它应该在小部件上使用。
关于这一点,如何将VennCircle定义为小部件而不是对象?

编辑:我可以通过修改colorFn函数来做到这一点:

colorFn: (VennCircle venn, _) {
          if (venn.circleColor == 'red') {
            return charts.Color.fromOther(
                color: charts.ColorUtil.fromDartColor(
                    Color.fromARGB(100, 255, 0, 0)));
          } else if (venn.circleColor == 'black') {
            return charts.ColorUtil.fromDartColor(Color.fromARGB(95, 0, 0, 0));
          }
          return charts.ColorUtil.fromDartColor(Color.fromARGB(95, 0, 255, 0));
        },

0 个答案:

没有答案