Добавление новых элементов в список с заменой старых элементов в списке флаттера - PullRequest
0 голосов
/ 10 февраля 2020

когда я добавляю новый элемент в мой список, он перезаписывает предыдущее значение. я хочу добавить список, но этого не происходит

  Container(
          // color: Colors.red,
          child: Row(
            mainAxisAlignment: MainAxisAlignment.end,

            children: <Widget>[
              Container(
                width: 50,
                height: 50,
                // color: Colors.blue,
                child: FlatButton(onPressed: (){

                  if(_itemCount > 0){
                    setState(() {
                      _itemCount--;
                    });

                  }

                }, child: Image(image: AssetImage("images/minus.png"),width: 20,height: 20,),),
              ),
              Container(
                child: Text("$_itemCount"),
              ),
              Container(
                width: 50,
                height: 50,
                //  color: Colors.green,
                child: FlatButton(onPressed: () async{

                  setState(() {
                    _itemCount++;
                  });


                  cartItemList = [{"index":widget.intex,"itemObj":widget.items,"quantity":_itemCount}];
                  print(addedItems(cartItemList));


                  final prefs = await SharedPreferences.getInstance();
                  await prefs.setStringList('itemList', addedItems(cartItemList));

                }, child: Image(image: AssetImage("images/plus.png"),width: 20,height: 20,),),
              ),
            ],
          ),
        ),

У меня есть просмотр списка, элементы просмотра списка будут извлекаться из API, когда я нажимаю один элемент, я хочу добавить его в список, который я могу сохранить в совместном предпочтении. но каждый раз, когда я нажимаю на кнопку ранее, одна перезаписывается новой.

ниже приведен код для преобразования данных в json формат

  List<String> addedItems(List<dynamic> cartList){
try {
  var res = cartList.map((v) => json.encode(v)).toList();
  return res;
} catch (err) {
  // Just in case
  return [];
}
}

Вывод равен 1. при добавлении первый элемент

[{"itemObj": {"item_price": 22.0, "item_name": "DINE SPECIAL BREAKFAST", "item_img": "", "item_code": "001", "item_discount": 0.0, "item_id": 552, "category_id": 12}, "количество": 1}]

когда я снова добавляю тот же элемент

[{"itemObj": {"item_price": 22.0, "item_name": "DINE SPECIAL BREAKFAST", "item_img": "", "item_code ":" 001" , "item_discount": 0.0, "item_id": 552, "category_id": 12}, "количество": 2}]

когда я добавляю новый элемент

[{"itemObj": {"item_price": 20.0, "item_name": "Engli sh Breakfast", "item_img": "", "item_code": "002", "item_discount": 0.0, "item_id": 71, "category_id": 12}, "количество": 1}]

////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////////////////////////

Но я хочу поставить как

[{"itemObj": {"item_price": 22.0, "item_name": "DINE SPECIAL BREAKFAST", "item_img": "", "item_code": "001", "item_discount": 0.0, "item_id": 552, "category_id": 12}, "количество": 2}, {"item_price": 20.0, "item_name": "Engli sh Breakfast", "item_img": "", "item_code": "002", "item_discount": 0.0, "item_id": 71, "category_id": 12}, "количество": 1}]

1 Ответ

0 голосов
/ 10 февраля 2020

Вы устанавливаете список каждый раз, когда нажимаете кнопку, как эта

cartItemList = [{"index":widget.intex,"itemObj":widget.items,"quantity":_itemCount}];

, возможно, вам нужно сделать это

cartItemList.add({"index":widget.intex,"itemObj":widget.items,"quantity":_itemCount});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...