如何使饼图具有交互性?未获得 charts_flutter 的饼图 onChangedListener 回调

How to make pie chart interactive? Not getting charts_flutter's pie chart onChangedListener callback

我正在使用 charts_flutter 的自动标签饼图。我需要在 tapping/selecting 段上获取所选饼图段的数据值。但我不会在 selectionModel 的 changedListener 上获得回调。

var donutChart = new charts.PieChart(
      series,
      animate: true,
      animationDuration: Duration(milliseconds: 500),
      defaultInteractions: false,
      selectionModels: [
        new charts.SelectionModelConfig(
          type: charts.SelectionModelType.action,
          changedListener: _onSelectionChanged,
          updatedListener: _onSelectionUpdated,
        ),
      ],
      defaultRenderer: new charts.ArcRendererConfig(
        arcWidth: 65,
        arcRendererDecorators: [
          new charts.ArcLabelDecorator(),
        ],
      ),
    );

  _onSelectionChanged(charts.SelectionModel model) {
    print('In _onSelectionChanged');
    final selectedDatum = model.selectedDatum;
    print(selectedDatum.length);
    if (selectedDatum.first.datum) {
      print(model.selectedSeries[0].measureFn(model.selectedDatum[0].index));
      chartAmountText = selectedDatum[0].datum.totalSpend.toString().split('.');
    }
  }

 _onSelectionUpdated(charts.SelectionModel model) {
    print('In _onSelectionUpdated');
    if (selectedDatum.length > 0) {
      print(selectedDatum[0].datum.category);
    }
  }

首先您必须将 defaultInteractions 设置为 true 并将 SelectionModelType 更改为 info:

@override
  Widget build(BuildContext context) {
    return new charts.PieChart(
      seriesList,
      animate: animate,
      defaultInteractions: true,
      selectionModels: [
          new charts.SelectionModelConfig(
            type: charts.SelectionModelType.info,
            changedListener: _onSelectionChanged,
            updatedListener: _onSelectionUpdated
          ),
        ],
    
    );
  }

然后在 _onSelectionChanged 中删除此条件 if (selectedDatum.first.datum) 因为那不是 bool。在 _onSelectionUpdated 中,在 if.

之前添加 final selectedDatum = model.selectedDatum;