当 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,该函数也将充当同步操作。