当 API-request 尚未完成保存到 Flutter 中的数据库时,如何处理从数据库中读取?
How to handle reading from database when API-request hasn't finished yet to save to database in Flutter?
对于我的应用程序,我正在从我的 API 中为每个屏幕加载背景图像 link。
在下载并保存图像 link 的查询之后,我正在从数据库中查询 link。
现在的问题是,虽然我正在使用 await,但该函数并没有等待下载和保存完成,因此我从数据库中得到一个空结果,并且从图像加载器中得到一个错误。
Future<String> downloadAsset(String name) async {
final Map<String, String> _json = {
'mandant': Config.mandant,
'name': name
};
final query = MakePost('get_app_assets', false, _json, saveAsset);
await query.queryAPI(); // Function won't wait for this to finish
String ret = await dbAppAssets.getText(name); // Get link from database
return ret;
}
我已经尝试过使用.then(),但同样的事情发生了。
这只会在第一次调用每个屏幕时发生,但通常如何处理?
如果重要的话,我正在将 riverpod 与 futureProviders 一起使用。
我不知道你在哪里使用了downloadAsset函数,但是当你在一个函数上使用Future时你也应该在你使用它的地方等待这个函数,例如:
Future<void> _reverseScrollToTopAnimation() async {
await controller!.reverse();
_showBackToTopButton = false; // hide the back-to-top button
}
然后,无论你在哪里调用它,你也应该等待那个函数:
await _reverseScrollToTopAnimation();
如果不是,即使您在函数内部使用 await,该函数也将充当同步操作。
对于我的应用程序,我正在从我的 API 中为每个屏幕加载背景图像 link。 在下载并保存图像 link 的查询之后,我正在从数据库中查询 link。
现在的问题是,虽然我正在使用 await,但该函数并没有等待下载和保存完成,因此我从数据库中得到一个空结果,并且从图像加载器中得到一个错误。
Future<String> downloadAsset(String name) async {
final Map<String, String> _json = {
'mandant': Config.mandant,
'name': name
};
final query = MakePost('get_app_assets', false, _json, saveAsset);
await query.queryAPI(); // Function won't wait for this to finish
String ret = await dbAppAssets.getText(name); // Get link from database
return ret;
}
我已经尝试过使用.then(),但同样的事情发生了。
这只会在第一次调用每个屏幕时发生,但通常如何处理?
如果重要的话,我正在将 riverpod 与 futureProviders 一起使用。
我不知道你在哪里使用了downloadAsset函数,但是当你在一个函数上使用Future时你也应该在你使用它的地方等待这个函数,例如:
Future<void> _reverseScrollToTopAnimation() async {
await controller!.reverse();
_showBackToTopButton = false; // hide the back-to-top button
}
然后,无论你在哪里调用它,你也应该等待那个函数:
await _reverseScrollToTopAnimation();
如果不是,即使您在函数内部使用 await,该函数也将充当同步操作。