当我们关闭 flutter 应用程序后,LocalStorage 不会保留数据

Alo*_*are 5 local-storage flutter

我是 Flutter 新手,开发的应用程序需要在 LocalStorage 中存储一定量的数据,我成功地在 LocalStorage 之间存储和检索数据,但是当我关闭应用程序并重新打开它时,它会刷新整个数据,当我们尝试时访问它给出 Null 的相同数据。我在这里附上我的示例代码,我是如何做到这一点的。它工作正常的唯一问题是它在重新启动应用程序后不会保留数据。

void saveData() async{

    final LocalStorage storage = new LocalStorage('brick-game');

    await storage.setItem('data', _data);  

}


@override
  Widget build(BuildContext context){

        final LocalStorage storage = new LocalStorage('brick-game');

        final data  = storage.getItem('data');

};


Run Code Online (Sandbox Code Playgroud)

请让我知道我做错了什么或缺少什么。我们将不胜感激您的帮助。谢谢

cam*_*ski 6

由于某种原因,您必须等待本地存储ready(但这应该自动完成)。所以,在打电话之前getItem()你需要await storage.ready;,像这样:

Future<DataType> _getData() async {
  final LocalStorage storage = new LocalStorage('brick-game');
  await storage.ready;
  return await storage.getItem('data');
}
Run Code Online (Sandbox Code Playgroud)

然后在您的build方法中您可以使用 aFutureBuilder<T>()来构建您的 UI。

@override
Widget build(BuildContext context) {
  return FutureBuilder<DataType>(
    future: _getData,
    builder: (BuildContext context) {
      if (snapshot.hasData) // we read data from storage
      else if (snapshot.hasError) // an error occured
      else // we are still loading
    },
  );
}
Run Code Online (Sandbox Code Playgroud)


ven*_*eno 1

本地存储有一个ready方法,这意味着需要一段时间才能访问存储

您的保存方法是async,您设置了带有关键字的项目await,但是当您再次启动应用程序时,您会得到没有await关键字的项目

尝试制定一种获取物品的方法

getItems() async {
   final LocalStorage storage = new LocalStorage('brick-game');

   final data  = await storage.getItem('data');
   print(data);
}



@override
  Widget build(BuildContext context){

     getItems().then((_){
        print(data);
     });

};
Run Code Online (Sandbox Code Playgroud)