如何缓存 Future 返回的值?
How to cache a value returned by a Future?
对于我的 Flutter 应用程序,我正在尝试访问 Notebooks
的 List
,此列表由 Api
从文件中解析。我想在每次调用我的笔记本 getter 时避免 reading/parsing 该文件,因此我想要这样的东西:
- 如果文件已经解析过一次,return 之前解析过的
List<Note>
;
- 否则,读取并解析文件,保存
List<Note>
和 return。
我想象的是这样的:
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?
对于我的 Flutter 应用程序,我正在尝试访问 Notebooks
的 List
,此列表由 Api
从文件中解析。我想在每次调用我的笔记本 getter 时避免 reading/parsing 该文件,因此我想要这样的东西:
- 如果文件已经解析过一次,return 之前解析过的
List<Note>
; - 否则,读取并解析文件,保存
List<Note>
和 return。
我想象的是这样的:
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?