【问题标题】:How to make pie chart interactive? Not getting charts_flutter's pie chart onChangedListener callback如何使饼图具有交互性?没有得到charts_flutter的饼图onChangedListener回调
【发布时间】:2020-08-13 01:19:02
【问题描述】:

我正在使用charts_flutter 的自动标签饼图。我需要在点击/选择段时获取所选饼图段的数据值。但我不会在 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);
    }
  }

【问题讨论】:

    标签: flutter charts pie-chart


    【解决方案1】:

    首先您必须将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;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2020-08-12
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多