computeStackedValues static method

List<List<double>> computeStackedValues(
  1. List<Series> series
)

Compute cumulative (stacked) values per category index.

Returns result[seriesIdx][dataIdx] = stacked value.

Implementation

static List<List<double>> computeStackedValues(List<Series> series) {
  if (series.isEmpty) return const [];

  int len = 0;
  for (final s in series) {
    final l = s.data?.length ?? 0;
    if (l > len) len = l;
  }

  final List<double> posAccum = List.filled(len, 0.0);
  final List<double> negAccum = List.filled(len, 0.0);
  final List<List<double>> result = [];

  for (final s in series) {
    final data = s.data;
    final row = List<double>.filled(len, 0.0);
    for (int i = 0; i < len; i++) {
      final v =
          ChartDataValueReader.yValueOrNull(
            data != null && i < data.length ? data[i] : null,
          ) ??
          0;
      if (v >= 0) {
        row[i] = posAccum[i] + v;
        posAccum[i] += v;
      } else {
        row[i] = negAccum[i] + v;
        negAccum[i] += v;
      }
    }
    result.add(row);
  }
  return result;
}