0

我不明白如何改变这个浮动元素的颜色。现在,它是绿色/灰色。我希望它是这种确切的颜色:颜色(0xFF3238a4)。另外,它的文本是蓝色的,我想把它改成 Colors.white。

我试图阅读所有文档,但我不知道哪个属性能够更改此元素背景和文本颜色。

如果这听起来是一个愚蠢的问题,我很抱歉,但我尝试了一切......你可以在这里找到文档。

这是我的代码。

import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import '../models/esame.dart';
import 'package:intl/intl.dart';

class andamento_voti_laurea extends StatefulWidget {
  andamento_voti_laurea({required this.lista_esami});

  final List<Esame> lista_esami;

  @override
  _andamento_voti_laureaState createState() => _andamento_voti_laureaState();
}

class _andamento_voti_laureaState extends State<andamento_voti_laurea> {
  double get intervalloGrafico {
    double intervallo = 1;
    double differenza = votoMassimo - votoMinimo;
    print("Differenza $differenza");

    if (differenza > 6) {
      intervallo = 3;
    } else if (differenza <= 6 && differenza > 3) {
      intervallo = 2;
    } else {
      intervallo = 1;
    }

    return intervallo;
  }

  double get numeroEsami {
    // SERVE PER DETERMINARE LA MASSIMA X
    // IL VALORE DI X CRESCE QUANTI PIU SONO GLI ESAMI. SE UN ESAME MAX-X = 1
    double totale_esami = 0;

    for (int i = 0; i < widget.lista_esami.length; i++) {
      if (widget.lista_esami[i].voto != 0) {
        //diverso da zero perché devo escludere idoneità
        totale_esami++;
      }
    }

    return totale_esami;
  }

  Map<int, String> posizione_e_data_esame = {};
  void dataEsame(int x, DateTime data) {
    List<String> lista = [];
    late String data_corta;

    data_corta = DateFormat('dd MMM', 'it').format(data);
    //print(data_corta);

    posizione_e_data_esame[x] = data_corta;

    //print("STRINGA: ${posizione_e_data_esame[0]}");
  }

  List<FlSpot> get puntiGrafico {
    // CREA PUNTI SUL GRAFICO DA LISTA ESAMI

    List<FlSpot> lista = [];

    // DEVO ORDINARE LA LISTA DAL PIU VECCHIO AL PIU RECENTE
    setState(() {
      widget.lista_esami.sort((a, b) => a.data.millisecondsSinceEpoch
          .compareTo(b.data.millisecondsSinceEpoch));
    });

    for (int i = 0; i < widget.lista_esami.length; i++) {
      if (widget.lista_esami[i].voto == 18) {
        lista.add(FlSpot(i.toDouble(), (18).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 19) {
        lista.add(FlSpot(i.toDouble(), (19).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 20) {
        lista.add(FlSpot(i.toDouble(), (20).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 21) {
        lista.add(FlSpot(i.toDouble(), (21).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 22) {
        lista.add(FlSpot(i.toDouble(), (22).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 23) {
        lista.add(FlSpot(i.toDouble(), (23).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 24) {
        lista.add(FlSpot(i.toDouble(), (24).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 25) {
        lista.add(FlSpot(i.toDouble(), (25).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 26) {
        lista.add(FlSpot(i.toDouble(), (26).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 27) {
        lista.add(FlSpot(i.toDouble(), (27).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 28) {
        lista.add(FlSpot(i.toDouble(), (28).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 29) {
        lista.add(FlSpot(i.toDouble(), (29).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 30) {
        lista.add(FlSpot(i.toDouble(), (30).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
      if (widget.lista_esami[i].voto == 31) {
        lista.add(FlSpot(i.toDouble(), (31).toDouble()));
        dataEsame(i, widget.lista_esami[i].data);
      }
    }

    //(lista);

    return lista;
  }

//  FlSpot(0, 30),
  double get votoMinimo {
    // SERVE PER DETERMINARE LA Y MINIMA DEL GRAFICO
    double minimo = 31;

    for (int i = 0; i < widget.lista_esami.length; i++) {
      if (widget.lista_esami[i].voto <= minimo) {
        minimo = widget.lista_esami[i].voto.toDouble();
      }
    }

    return minimo;
  }

  double get votoMassimo {
    // SERVE PER DETERMINARE LA Y MASSIMA DEL GRAFICO
    double massimo = 18;

    for (int i = 0; i < widget.lista_esami.length; i++) {
      if (widget.lista_esami[i].voto >= massimo) {
        massimo = widget.lista_esami[i].voto.toDouble();
      }
    }

    return massimo;
  }

  List<Color> gradientColors = [
    const Color(0xFF3238a4),
  ];

  @override
  Widget build(BuildContext context) {
    // print("Voto minimo: $votoMinimo");
    return Stack(
      children: <Widget>[
        AspectRatio(
          aspectRatio: 1.70,
          child: Container(
            decoration: const BoxDecoration(
                borderRadius: BorderRadius.all(
                  Radius.circular(20),
                ),
                color: Colors.white),
            child: Padding(
              padding: const EdgeInsets.only(
                  right: 30.0, left: 10.0, top: 35, bottom: 30),
              child: LineChart(
                // showAvg ? avgData() :
                mainData(),
              ),
            ),
          ),
        ),
      ],
    );
  }

  LineChartData mainData() {
    return LineChartData(
      gridData: FlGridData(
        horizontalInterval: intervalloGrafico,
        show: true,

        drawVerticalLine: false, // LINEE VERTICALI
        drawHorizontalLine: false, // LINEE ORIZZONTALI
        getDrawingHorizontalLine: (value) {
          return FlLine(
            color: const Color(0xFF3238a4),
            strokeWidth: 1, //SPESSO LINEA ORIZZONTALE
          );
        },
        getDrawingVerticalLine: (value) {
          return FlLine(
            color: const Color(0xFF3238a4),
            strokeWidth: 1,
          );
        },
      ),
      titlesData: FlTitlesData(
        show: true,
        rightTitles: SideTitles(showTitles: false),
        topTitles: SideTitles(showTitles: false),
        bottomTitles: SideTitles(
          showTitles: false,
          reservedSize: 22,
          interval: 1,
          getTextStyles: (context, value) => const TextStyle(
              color: Color(0xFF3238a4),
              fontWeight: FontWeight.bold,
              fontSize: 16),
          getTitles: (value) {
            switch (value.toInt()) {
              case 0:
                return 'E'; //DATA PRIMO ESAME
            }
            return 'E';
          },
          margin: 10,
        ),
        leftTitles: SideTitles(
          showTitles: true,
          interval: intervalloGrafico,
          getTextStyles: (context, value) => const TextStyle(
            color: Color(0xFF3238a4), // VALORI LATERALI
            fontWeight: FontWeight.bold,
            fontSize: 14,
          ),
          getTitles: (value) {
            switch (value.toInt()) {
              case 18:
                return '18';
              case 19:
                return '19';
              case 20:
                return '20';
              case 21:
                return '21';
              case 22:
                return '22';
              case 23:
                return '23';
              case 24:
                return '24';
              case 25:
                return '25';
              case 26:
                return '26';
              case 27:
                return '27';
              case 28:
                return '28';
              case 29:
                return '29';
              case 30:
                return '30';
              case 31:
                return '30L';
            }
            return '';
          },
          reservedSize: 32,
          margin: 12,
        ),
      ),
      borderData: FlBorderData(
        show: true,
        border: Border(
          bottom: BorderSide(color: const Color(0xFF3238a4), width: 1),
          left: BorderSide(color: const Color(0xFF3238a4), width: 1),
        ),
      ),

      minX: 0,
      maxX: numeroEsami - 1, // numero di esami fatti
      minY: votoMinimo - 1, //voto minimo
      maxY: votoMassimo + 1, //ALTEZZA GRAFICO, VOTO MASSIMO
      lineBarsData: [
        LineChartBarData(
          // valori sul grafico

          spots: puntiGrafico,
          isCurved: true,
          colors: gradientColors, // COLORE CURVA DA SINISTRA A DESTRA
          barWidth: 5,
          isStrokeCapRound: true,

          dotData: FlDotData(
            show: true,
          ),
          belowBarData: BarAreaData(
            show: true,
            colors: gradientColors
                .map((color) => color.withOpacity(0.3))
                .toList(), //COLORE BLU CHIARO GRAFICO SOTTO CURVA
          ),
        ),
      ],
    );
  }
}

在此处输入图像描述

4

0 回答 0