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

时间:2019-11-27 19:13:59

标签: json list flutter dart sharedpreferences

         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 个答案:

答案 0 :(得分:0)

原因是每次单击“加高按钮”时都重置items
因此,items列表将不会保留历史记录item

List<String> items = [];

您必须将此行移出“凸起按钮”

代码段

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"),
        ),