如何缓存 Future 返回的值?

How to cache a value returned by a Future?

对于我的 Flutter 应用程序,我正在尝试访问 NotebooksList,此列表由 Api 从文件中解析。我想在每次调用我的笔记本 getter 时避免 reading/parsing 该文件,因此我想要这样的东西:

我想象的是这样的:

  List<Notebook> get notebooks {
    if (_notebooks != null) {
      return _notebooks;
    } else {
      return await _api.getNotebooks();
    }
  }

此代码不正确,因为我需要将 getter async 和 return 标记为 Future,但我不想这样做。你知道这个问题的任何解决方案,比如缓存值吗?我还想避免在我的应用程序启动时初始化此列表,并且只在第一次需要该值时解析一次。

你可以创建一个单例,你可以在你读取数据后将数据存储在 属性 中,从下一次开始你可以使用 属性.

中的相同数据

创建单例可以参考这个问题

How do you build a Singleton in Dart?