| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import 'package:flutter/material.dart';
- export '../chart_style.dart';
- abstract class BaseChartRenderer<T> {
- double maxValue, minValue;
- late double scaleY;
- double topPadding;
- Rect chartRect;
- int fixedLength;
- Paint chartPaint = Paint()
- ..isAntiAlias = true
- ..filterQuality = FilterQuality.high
- ..strokeWidth = 1.0
- ..color = Colors.red;
- Paint gridPaint = Paint()
- ..isAntiAlias = true
- ..filterQuality = FilterQuality.high
- ..strokeWidth = 0.5
- ..color = Color(0xff4c5c74);
- BaseChartRenderer({
- required this.chartRect,
- required this.maxValue,
- required this.minValue,
- required this.topPadding,
- required this.fixedLength,
- required Color gridColor,
- }) {
- if (maxValue == minValue) {
- maxValue *= 1.5;
- minValue /= 2;
- }
- scaleY = chartRect.height / (maxValue - minValue);
- gridPaint.color = gridColor;
- // print("maxValue=====" + maxValue.toString() + "====minValue===" + minValue.toString() + "==scaleY==" + scaleY.toString());
- }
- double getY(double y) => (maxValue - y) * scaleY + chartRect.top;
- String format(double? n) {
- if (n == null || n.isNaN) {
- return "0.00";
- } else {
- return n.toStringAsFixed(fixedLength);
- }
- }
- void drawGrid(Canvas canvas, int gridRows, int gridColumns);
- void drawText(Canvas canvas, T data, double x);
- void drawVerticalText(canvas, textStyle, int gridRows);
- void drawChart(T lastPoint, T curPoint, double lastX, double curX, Size size,
- Canvas canvas);
- void drawLine(double? lastPrice, double? curPrice, Canvas canvas,
- double lastX, double curX, Color color) {
- if (lastPrice == null || curPrice == null) {
- return;
- }
- double lastY = getY(lastPrice);
- double curY = getY(curPrice);
- canvas.drawLine(
- Offset(lastX, lastY), Offset(curX, curY), chartPaint..color = color);
- }
- void drawCircle(Canvas canvas, double curX, double curY, Color color) {
- canvas.drawCircle(
- Offset(curX, getY(curY)),
- 2.0,
- Paint()
- ..style = PaintingStyle.stroke
- ..strokeWidth = .8
- ..color = color,
- );
- }
- TextStyle getTextStyle(Color color) {
- return TextStyle(fontSize: 10.0, color: color);
- }
- }
|