es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener obtener cambios de variables

Tengo un controlador getx. En él he declarado dos variables, que serán actualizadas.

var percentageEVS = 0.obs;
var percentOthers = 0.obs;

Estoy tratando de cambiar los valores de estas variables usando la siguiente función.

calculatespentTime(){
  final totalDuration = dashboard[0].duration ?? 0;
  final durationEVS = dashboard[1].duration!.toInt();
  final _percentageEVS = (durationEVS/totalDuration)*100;
  percentageEVS.value = _percentageEVS.toInt();
}

Sin embargo, no estoy obteniendo los valores cambiados.

final List<chartdata> chartData = [
  ChartData(x: 'Maths', y: _controller.percentageEVS.value.toDouble(), color: Colors.red),
  ChartData(x: 'English', y: 38, color: Colors.blue),
];

¿Cómo puedo obtener el valor cambiado y pasarlo a chartData?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener los valores actualizados y pasarlos a chartData, puedes usar el método .refresh() proporcionado por GetX. Este método actualiza el estado de la variable y actualiza la interfaz de usuario en consecuencia.

    Así es como puedes usarlo en tu código:

    1. Llama a la función calculatespentTime() antes de usar la lista chartData.
    2. Llama al método refresh() en ambas variables observables después de actualizarlas dentro de la función calculatespentTime().

    Aquí está el código actualizado:

      calculatespentTime(){
        final totalDuration = dashboard[0].duration??0;
        final durationEVS = dashboard[1].duration!.toInt();
        final _percentageEVS = (durationEVS/totalDuration)*100;
        _controller.percentageEVS.value = _percentageEVS.toInt();
        _controller.percentOthers.value = 100 - _percentageEVS.toInt();
        _controller.percentageEVS.refresh();
        _controller.percentOthers.refresh();
      }
    
      // llama a la función antes de usar chartData
      calculatespentTime();
    
      final List<chartdata> chartData = [
        ChartData(x: 'Matemáticas', y: _controller.percentageEVS.value.toDouble(), color: Colors.red),
        ChartData(x: 'Inglés', y: _controller.percentOthers.value.toDouble(), color: Colors.blue),
      ];
    

    Esto debería actualizar los valores de chartData con los porcentajes actualizados.

Comments are closed.