【发布时间】:2021-10-18 23:48:01
【问题描述】:
我正在使用无法修改的现有模型类在应用程序中构建屏幕。该模型有一个名为 refreshList() 的方法,该方法从 API 获取一些数据,对其进行处理,最后使用获取的数据更新模型中的 List 成员。
我想知道列表的状态 - 即它是未初始化、正在获取还是已获取 - 以便我可以相应地更新 UI。
问题是refreshList()不是async,而是在内部使用async方法。此外,内部方法不返回Future。
void refreshList(){
if( someCondition ){
_doRefreshList();
}
}
void _doRefreshList() async{
// ... do stuff
http.Response response = await http.get(url);
// ... do some more stuff
}
我想做类似的事情
setState((){ _isLoading = true; });
await model.refreshList();
setState((){ _isLoading = false; });
但不幸的是,我无法修改模型中的方法以返回 Future。
有什么方法可以在不修改refreshList() 为async 并返回Future 并修改_doRefreshList() 以返回Future 的情况下实现此目的?
【问题讨论】:
-
你为什么不直接做
async?我怀疑还有其他方法。 -
你可以使用 Completer 来强制方法返回一个 Future
标签: asynchronous dart flutter async-await dart-async