0

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

功能:

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() 但这会清除所有内容,我无法再次回调该函数。

提前致谢!

4

1 回答 1

2

这是由于您的 Timer.periodic 函数每秒运行一次

解决方案:

创建状态计时器变量

Timer? _timer;

当您第一次 onPressed 时为计时器分配一个值

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

当您想停止添加图表时,请执行此操作。

onPressed: () { 
if(_timer !=null) {
_timer.cancel();
}
},
于 2021-09-27T04:48:14.303 回答