import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';

class ScatterPlotChart extends StatelessWidget {
  final List<ScatterSpot> points;
  final int xMax;
  final int yMax;
  final Color pointColor;
  final int divisions;

  ScatterPlotChart({
    required this.points,
    required this.xMax,
    required this.yMax,
    required this.pointColor,
    required this.divisions,
  });

  @override
  Widget build(BuildContext context) {
    // 计算向上取整后的最大值
    double xMaxCeil = (xMax / 100).ceil() * 100.0;
    double yMaxCeil = (yMax / 100).ceil() * 100.0;

    return SizedBox(
      child: ScatterChart(
        ScatterChartData(
          backgroundColor: Colors.transparent,
          gridData: FlGridData(
            show: true,
            horizontalInterval: yMaxCeil / divisions,
            verticalInterval: xMaxCeil / divisions,
            getDrawingHorizontalLine: (value) {
              return FlLine(
                color: themeController.currentColor.sc4, // 设置网格线颜色
                strokeWidth: 0.5,
              );
            },
            getDrawingVerticalLine: (value) {
              return FlLine(
                color: themeController.currentColor.sc4, // 设置网格线颜色
                strokeWidth: 0.5,
              );
            },
          ),
          titlesData: FlTitlesData(
            show: true,
            leftTitles: AxisTitles(
              sideTitles: SideTitles(
                showTitles: true,
                reservedSize: 60.rpx, // 给 y 轴标签更多空间
                getTitlesWidget: (double value, TitleMeta meta) {
                  return Padding(
                    padding: EdgeInsets.only(right: 14.rpx), // 右侧加间距
                    child: Text(
                      value.toStringAsFixed(0),
                      style: TextStyle(
                        fontSize: 18.rpx,
                        color: themeController.currentColor.sc4,
                      ),
                      maxLines: 1,
                      overflow: TextOverflow.ellipsis,
                      textAlign: TextAlign.right, // 右对齐
                    ),
                  );
                },
              ),
            ),
            bottomTitles: AxisTitles(
              sideTitles: SideTitles(
                showTitles: true,
                getTitlesWidget: (double value, TitleMeta meta) {
                  return Text(
                    value.toStringAsFixed(0),
                    style: TextStyle(
                      fontSize: 18.rpx,
                      color: themeController.currentColor.sc4,
                    ),
                  );
                },
              ),
            ),
            rightTitles: AxisTitles(
              sideTitles: SideTitles(showTitles: false),
            ),
            topTitles: AxisTitles(
              sideTitles: SideTitles(showTitles: false),
            ),
          ),
          borderData: FlBorderData(
            show: true,
            border: Border.all(
              color: themeController.currentColor.sc4,
              width: 0.5,
            ),
          ),
          // 修改散点的大小和颜色
          scatterSpots: points.map((point) {
            return ScatterSpot(
              point.x, // x 坐标
              point.y, // y 坐标
              dotPainter: FlDotCirclePainter(
                radius: 3.rpx, // 自定义大小
                color: pointColor, // 自定义颜色
              ),
            );
          }).toList(),
          minX: 0,
          maxX: xMaxCeil,
          minY: 0,
          maxY: yMaxCeil,
        ),
      ),
    );
  }
}
