在颤动中多次将 json 数据添加到共享首选项

Posted

技术标签:

【中文标题】在颤动中多次将 json 数据添加到共享首选项【英文标题】:adding json data to shared preferences more than once in flutter 【发布时间】:2020-03-23 09:58:46 【问题描述】:
         RaisedButton(
          onPressed: () async 
            SharedPreferences pref = await SharedPreferences.getInstance();
            List<String> item = [
              widget.menu.iName.toString(),
              widget.menu.iId.toString(),
              widget.menu.iCount.toString()
            ];
            List<String> items = [];
            if (item != null) 
              items.addAll(item);
              pref.setStringList('products', items);
             else 
              print("there are no items");
            
          ,
          child: Text("Add"),
        ),



         RaisedButton(
          onPressed: () async 
            List<String> myItems = await SharedPrefLib.listOfProducts();
            if (basket != null) 
              basket.forEach((f) 
                print(f);
              );
             else 
              print("there is nothing");
            
          ,
          child: Text("show products"),
        ),

我想在共享偏好中添加多个产品列表,但每次点击添加按钮时,它只会添加一个产品列表,仅此而已。

【问题讨论】:

【参考方案1】:

原因是你每次点击凸起按钮时都会重置items 所以items 列表不会保留历史记录item

List<String> items = [];

你必须把这条线移出凸起的按钮

代码sn-p

List<String> items = [];

RaisedButton(
          onPressed: () async 
            SharedPreferences pref = await SharedPreferences.getInstance();
            List<String> item = [
              widget.menu.iName.toString(),
              widget.menu.iId.toString(),
              widget.menu.iCount.toString()
            ];

            if (item != null) 
              items.addAll(item);
              pref.setStringList('products', items);
             else 
              print("there are no items");
            
          ,
          child: Text("Add"),
        ),

【讨论】:

我试过了,先生,但仍然不能按我的意愿工作,它只是列出了列表中的最后一项 paste.ubuntu.com/p/p2c74KSnCw 这是代码的最后一个版本 这一行列表 urunler = [];坐在你的类 SharedPrefLib 中,你必须把它移出类 SharedPrefLib 我是在写完最后一条评论后才这样做的,然后我意识到使用此代码 pref.setStringList('products', items); 存在问题我使用它而不是使用我的 addToChart() 方法。顺便谢谢兄弟

以上是关于在颤动中多次将 json 数据添加到共享首选项的主要内容,如果未能解决你的问题,请参考以下文章

颤动中的共享首选项停止应用程序

在共享首选项中解码存储的 json 结果字符串

我的共享首选项存储列表视图的数据并检索它不起作用

添加值后增加共享首选项键

将 Web 服务数据存储到共享首选项

SharedPreferences 在 null 颤动上调用