每x秒扑动运行功能
问题内容:
在我的flutter应用程序内部,我想每10秒检查一次api。我发现这篇文章每隔x倍的时间运行一个函数,并执行以下操作:
class _MainPage extends State<MainPage> {
int starter = 0;
void checkForNewSharedLists(){
// do request here
setState((){
// change state according to result of request
});
}
Widget build(BuildContext context) {
Timer.periodic(Duration(seconds: 15), (Timer t) => checkForNewSharedLists());
}
}
不幸的是,请求堆积如山:在第一个“回合”上重启应用程序后,有两个对api的请求,第二个回合是四个请求,第三个回合是八个,依此类推…
有人知道如何解决此问题吗?
问题答案:
build()
通常,每次Timer.periodic
创建新函数时,都可以调用一次以上。
您需要将这些代码出来的build()
像
Timer timer;
@override
void initState() {
super.initState();
timer = Timer.periodic(Duration(seconds: 15), (Timer t) => checkForNewSharedLists());
}
@override
void dispose() {
timer?.cancel();
super.dispose();
}
更好的办法是完全从API层或类似层的小部件中移出此类代码,并StreamBuilder
在数据更新的情况下使用来更新视图。