buildDualLineChart function

Widget buildDualLineChart({
  1. required Map<DateTime, double> chartMaxData,
  2. required Map<DateTime, double> chartMinData,
  3. required double dataMin,
  4. required double dataMax,
  5. required String dataType,
})

Build a dual-line chart widget.

Implementation

Widget buildDualLineChart({
  required Map<DateTime, double> chartMaxData,
  required Map<DateTime, double> chartMinData,
  required double dataMin,
  required double dataMax,
  required String dataType,
}) {
  // Handle flat data: if max == min for all points, don't draw chart.
  final allFlat =
      chartMaxData.values.every((v) => v == dataMax) &&
      chartMinData.values.every((v) => v == dataMin) &&
      dataMax == dataMin;

  if (allFlat) {
    return SizedBox(
      height: 200,
      child: Center(
        child: Text(
          'No variation in data',
          style: TextStyle(color: Colors.grey.shade600),
        ),
      ),
    );
  }

  return SizedBox(
    height: 200,
    child: CustomPaint(
      painter: WeatherChartDualPainter(
        dailyMaxValues: chartMaxData,
        dailyMinValues: chartMinData,
        minValue: dataMin,
        maxValue: dataMax,
        maxColor: Colors.red,
        minColor: Colors.blue,
      ),
      size: const Size(double.infinity, 200),
    ),
  );
}