flutter - 对从服务器获取数据进行简单限制
问题描述
在我的应用程序的以下部分中,我想对单击按钮时从服务器获取数据进行简单限制,实际上,当我单击按钮时,我想检查简单变量为lastGetDataTimeStamp
我的代码和从服务器获取数据仅适用于第一个初始应用程序和方法,我该如何解决?
final MyApi _api;
int lastGetDataTimeStamp = 0;
bool _isExpanded = false;
bool get isExpanded => _isExpanded;
Future<Response<BuiltAccountData>> getLatestStories(bool canGet) {
if(canGet){
DateTime currentTime = DateTime.now();
var date = new DateTime.fromMillisecondsSinceEpoch(lastGetDataTimeStamp * 1000);
var diff = currentTime.difference(date);
if (diff.inMinutes >= 3) {
lastGetDataTimeStamp = DateTime.now().toUtc().millisecondsSinceEpoch;
BuiltLogin login = BuiltLogin((b) => b
..page_name = ''
..page_password = '');
return _api.getLatestStoriesList(login);
} else {
return null;
}
}else{
return null;
}
}
解决方案
更好地利用DateTime
方法,而不是转换为毫秒并使逻辑变得复杂。对我来说,以下代码正在工作。
注意:您可能想要创建_lastAccessedAt
一个全局变量,因为调用此代码的对象可能会被重构。如果它一直都活着,那么就没有必要让它成为全球性的。
// Note: You might want to make this a global variable depending on this class lifetime.
DateTime _lastAccessedAt;
Future<Response<BuiltAccountData>> getLatestStories(bool canGet) {
if (!canGet) {
print("Can't get");
return Future.value(null);
}
// Remove below block. Only for debugging.
if (_lastAccessedAt != null) {
print("Diff: ${DateTime.now().difference(_lastAccessedAt).inSeconds} secs");
}
if (_lastAccessedAt != null && DateTime.now().difference(_lastAccessedAt).inMinutes < 3) {
print("Ignoring request as last access time is less than 3mins");
return Future.value(null);
}
_lastAccessedAt = DateTime.now();
print("Sending to server");
/* Your logic goes here*/
...
}
推荐阅读
- javascript - 3个项目的localStorage json
- rapidjson - 查找 RapidJSON 值的父级
- r - 识别命名函数是否作为函数参数提供
- ios - react-native-plaid-link-sdk's redirect uri has access denied error with ios
- reactjs - 在创建反应应用程序中使用延迟加载时css未正确加载
- intellij-idea - 无法在 intellij 编辑器中打开 Dockerfile.dev
- javascript - 删除空格会提高网站的速度吗?
- python - 使用 NGINX 反向代理时出现分段错误(核心转储)。烧瓶
- java - 在 RecyclerView 的每个阶段调用哪个方法?
- xslt - 如何将 li 元素移动到前面的兄弟“p”元素中 - XSLT