fluttergraphflutter-graphql

Stopping a function in flutter


I am new to flutter and I have a problem with a flutter function. It adds data to graph and I programmed a button to start updating the graph. How do I stop it? I created another button and I want to program it to stop the function that adds the graph.

The function:

void updateDataSource(Timer timer) {


chartData.add(LiveData(time++, (y)));
chartData.removeAt(0);

_chartSeriesController.updateDataSource(
    addedDataIndex: chartData.length - 1, removedDataIndex: 0);

}

The first button:

onPressed: () {
                     Timer.periodic(const Duration(seconds: 1), updateDataSource);
                  },

The second button:

 onPressed: () {
                    
                    chartData.clear();
                    
                    
                  },

I put chartData.clear() but that clears everything and I am unable to call back the function again.

Thanks in advance!


Solution

  • This is due to your Timer.periodic function which is running every second

    Solution:

    Create a state timer variable

    Timer? _timer;

    Assign a value to the timer when you first onPressed

    onPressed: (){
    _timer =  Timer.periodic(const Duration(seconds: 1), updateDataSource);
    setState((){});
    },
    

    And when you want to stop adding graphs Do.

    onPressed: () { 
    if(_timer !=null) {
    _timer.cancel();
    }
    },