Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何缓存将来返回的值?_Flutter_Dart_Future - Fatal编程技术网

Flutter 如何缓存将来返回的值?

Flutter 如何缓存将来返回的值?,flutter,dart,future,Flutter,Dart,Future,对于我的flatter应用程序,我正在尝试访问笔记本的列表,该列表由Api从文件中解析。我希望避免每次调用我的笔记本getter时读取/解析文件,因此我希望这样: 如果文件已经解析过一次,则返回以前解析过的列表 否则,读取并解析文件,保存列表并返回它 我想象这样的情况: 列表获取笔记本{ 如果(_!=null){ 归还笔记本; }否则{ return wait_api.getNotebook(); } } 这段代码不正确,因为我需要标记getterasync并返回一个我不想返回的未来。您知

对于我的flatter应用程序,我正在尝试访问
笔记本
列表
,该列表由
Api
从文件中解析。我希望避免每次调用我的笔记本getter时读取/解析文件,因此我希望这样:

  • 如果文件已经解析过一次,则返回以前解析过的
    列表
  • 否则,读取并解析文件,保存
    列表
    并返回它
我想象这样的情况:

列表获取笔记本{
如果(_!=null){
归还笔记本;
}否则{
return wait_api.getNotebook();
}
}

这段代码不正确,因为我需要标记getter
async
并返回一个我不想返回的未来。您知道这个问题的解决方案吗,比如缓存值?我还希望避免在我的应用程序启动时初始化此列表,只在第一次需要值时解析一次。

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

您可以参考此问题创建一个单例


您的操作最终取决于异步操作。您可能需要在某个地方执行单独的异步初始化步骤,或者缓存getter需要是异步的。