diff --git a/lib/src/chart/bar_chart/bar_chart_data.dart b/lib/src/chart/bar_chart/bar_chart_data.dart index 94072998f..151c75a62 100644 --- a/lib/src/chart/bar_chart/bar_chart_data.dart +++ b/lib/src/chart/bar_chart/bar_chart_data.dart @@ -22,9 +22,11 @@ class BarChartData extends AxisChartData { ), FlBorderData borderData, double maxY, + Color backgroundColor, }) : super( gridData: gridData, borderData: borderData, + backgroundColor: backgroundColor, ) { initSuperMinMaxValues(maxY); } diff --git a/lib/src/chart/base/axis_chart/axis_chart_data.dart b/lib/src/chart/base/axis_chart/axis_chart_data.dart index 5b4ffd8f4..203822618 100644 --- a/lib/src/chart/base/axis_chart/axis_chart_data.dart +++ b/lib/src/chart/base/axis_chart/axis_chart_data.dart @@ -17,12 +17,16 @@ class AxisChartData extends BaseChartData { /// clip the chart to the border (prevent draw outside the border) bool clipToBorder; + /// A background color which is drawn behind th chart. + Color backgroundColor; + AxisChartData({ this.gridData = const FlGridData(), FlBorderData borderData, this.minX, this.maxX, this.minY, this.maxY, this.clipToBorder = false, + this.backgroundColor, }) : super(borderData: borderData); } diff --git a/lib/src/chart/base/axis_chart/axis_chart_painter.dart b/lib/src/chart/base/axis_chart/axis_chart_painter.dart index 9faea5c42..d97e077ee 100644 --- a/lib/src/chart/base/axis_chart/axis_chart_painter.dart +++ b/lib/src/chart/base/axis_chart/axis_chart_painter.dart @@ -12,14 +12,18 @@ abstract class AxisChartPainter extends BaseChartPainte final D data; Paint gridPaint; + Paint backgroundPaint; AxisChartPainter(this.data) : super(data) { gridPaint = Paint()..style = PaintingStyle.fill; + backgroundPaint = Paint()..style = PaintingStyle.fill; } @override void paint(Canvas canvas, Size size) { super.paint(canvas, size); + + drawBackground(canvas, size); drawGrid(canvas, size); } @@ -76,6 +80,25 @@ abstract class AxisChartPainter extends BaseChartPainte } } + /// This function draws a colored background behind the chart. + void drawBackground(Canvas canvas, Size viewSize) { + if (data.backgroundColor == null) { + return; + } + + final Size usableViewSize = getChartUsableDrawSize(viewSize); + backgroundPaint.color = data.backgroundColor; + canvas.drawRect( + Rect.fromLTWH( + getLeftOffsetDrawSize(), + getTopOffsetDrawSize(), + usableViewSize.width, + usableViewSize.height, + ), + backgroundPaint, + ); + } + /// With this function we can convert our [FlSpot] x /// to the view base axis x . /// the view 0, 0 is on the top/left, but the spots is bottom/left diff --git a/lib/src/chart/line_chart/line_chart_data.dart b/lib/src/chart/line_chart/line_chart_data.dart index a8b9ac693..56cbc6437 100644 --- a/lib/src/chart/line_chart/line_chart_data.dart +++ b/lib/src/chart/line_chart/line_chart_data.dart @@ -23,10 +23,12 @@ class LineChartData extends AxisChartData { double minY, double maxY, bool clipToBorder = false, + Color backgroundColor, }) : super( gridData: gridData, borderData: borderData, clipToBorder: clipToBorder, + backgroundColor: backgroundColor, ) { initSuperMinMaxValues(minX, maxX, minY, maxY); }