在 flutter 中停止一个函数

Stopping a function in flutter

我是 flutter 的新手,我对 flutter 函数有疑问。它将数据添加到图表中,我编写了一个按钮来开始更新图表。我该如何阻止它?我创建了另一个按钮,我想对其进行编程以停止添加图表的功能。

函数:

void updateDataSource(Timer timer) {


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

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

}

第一个按钮:

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

第二个按钮:

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

我输入 chartData.clear() 但这会清除所有内容,我无法再次回调函数。

提前致谢!

这是因为您的 Timer.periodic 函数每秒 运行

解决方案:

创建状态定时器变量

Timer? _timer;

第一次按下时给定时器赋值

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

当您想停止添加图表时执行。

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