Flutter: скрыть линию и ось в LineChart - PullRequest
0 голосов
/ 28 мая 2020

Я использую flutter charts_flutter: ^ 0.9.0.

Я хочу скрыть и показать два разных набора данных при нажатии кнопки в LineChart.

Не только строка указанных c данных должны быть скрыты, но также ось измерения .

Я уже пытался добавить SeriesLegend, чтобы показать и скрыть указанные c строки диаграмма.

Примерно так:

behaviors: [
    new charts.SeriesLegend(
      // list of ids to be hidden
      defaultHiddenSeries: chartStatus.value == 'both'
          ? []
          : chartStatus.value == 'one'
              ? ['two']
              : ['one'],
              // Here you cant hide the Legend
              position: charts.BehaviorPosition.bottom,         
    ),

Проблема в том, что есть легенда, показывающая, что я не хочу.

В дополнение к этому:

1. К сожалению, вы также можете скрыть все линии на диаграмме только с помощью свойства defaultRenderer на LineChart

2 .Я могу скрыть желаемую ось, но не линию, которая ей принадлежит.

Надеюсь, код моей линейной диаграммы прояснит это:

class LinearTestsChart extends StatelessWidget {
static const secondaryMeasureAxisId = 'secondaryMeasureAxisId';
final List<charts.Series> seriesList;
final bool animate;
final ValueNotifier<String> chartStatus;

const LinearTestsChart(
  {Key key, this.seriesList, this.animate, this.chartStatus})
  : super(key: key);

@override
Widget build(BuildContext context) {
return new charts.LineChart(
  seriesList,
  animate: animate,
  domainAxis: new charts.NumericAxisSpec(
    renderSpec: new charts.NoneRenderSpec(),
  ),
  // defaultRenderer: ,
  primaryMeasureAxis: chartStatus.value == 'both' ||
          chartStatus.value == 'one'
      ? new charts.NumericAxisSpec(
        )
      : new charts.NumericAxisSpec(
          renderSpec: new charts.NoneRenderSpec(),
        ),
  secondaryMeasureAxis: chartStatus.value == 'both' ||
          chartStatus.value == 'two'
      ? new charts.NumericAxisSpec(
        )
      : new charts.NumericAxisSpec(
          renderSpec: new charts.NoneRenderSpec(),
        ),
  behaviors: [
    new charts.SeriesLegend(
      // list of ids to be hidden
      defaultHiddenSeries: chartStatus.value == 'both'
          ? []
          : chartStatus.value == 'one'
              ? ['two']
              : ['one'],
              position: null,
    ),
    new charts.LinePointHighlighter(
      showVerticalFollowLine:
          charts.LinePointHighlighterFollowLineType.none,
      dashPattern: [],
      defaultRadiusPx: 0,
      drawFollowLinesAcrossChart: false,
    ),
  ],
);
}
}
...