如何解决Flutter-如何不一遍又一遍地调用同一服务?
假设我的目标是向用户显示“无尽”的推荐项目列表。
为此,我实现了一些异步方法getItemsFromServer(...),该方法非常昂贵(就服务器使用率,时间,电池等而言),并且可以从服务器中获取100个新项目(及其图像),并通过添加从服务器获取的项目来更新“推荐项目”屏幕的状态。
我的目标是仅在用户少于20个他尚未查看的项目时才调用此函数。 问题是,如果我要天真地进行编程,例如
if(itemsNotViewed<20){
getItemsFromServer(...)
}
在用户单击或查看一些新项目后,此异步方法将被调用约20次... 在不干扰用户体验的情况下,仅调用该方法一次并等待其完成的最原则性方法是什么?
解决方法
将来的对象本身对于记住是否正在发生某些事情很有用。这样的事情应该起作用。理想情况下,您可以将其放入可以从多个位置调用的函数中。
class MyState ... {
Future itemsBeingGotten;
build() {
...
onPress: () async {
if (itemsBeingGotten == null && itemsNotViewed < 20) {
try {
itemsBeingGotten = getItemsFromServer()
await itemsBeingGotten;
} finally {
itemsBeingGotten = null;
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。