Timer.periodic回调参数类型

bur*_*fon 2 dart

我正在尝试学习Dart,并遇到如下定期计时器的问题.

void changeImage(){
  imgUrl = images.elementAt(count++);
}

startPeriodic(sec){
  return new Timer.periodic(new Duration(seconds:sec), changeImage);
}
Run Code Online (Sandbox Code Playgroud)

编辑说:参数类型'changeImage'不能分配给参数类型'(Timer)→void'

你的任何建议Dart-maestros在那里将不胜感激.

Mar*_*ioP 6

根据Timer API,回调接收类型的参数Timer,因此您的回调方法应如下所示:

void changeImage(Timer t){
  imgUrl = images.elementAt(count++);
}
Run Code Online (Sandbox Code Playgroud)

这与仅使用不同new Timer(),后者在没有参数的情况下进行回调.原因是如果不再需要,可以在回调方法中取消Timer.