Добавьте количество товаров (приложение для электронной коммерции / магазина) - PullRequest
0 голосов
/ 26 мая 2020
• 1000 получить несколько раз один и тот же предмет.

cart_Items_Screen

вот код, который я использую для этого:

FlatButton(
                onPressed: () {
                  _addToCart(context, this.widget.product);
                },
                textColor: Colors.redAccent,
                child: Row(
                  children: [
                    Text('Add to Cart'),
                    IconButton(
                        icon: Icon(Icons.shopping_cart), onPressed: () {}),
                  ],
                ),
              ),
_addToCart(BuildContext context, Product product) async {
    var result = await _cartService.addToCart(product);
    if (result > 0) {
      print(result);
      _showSnackMessage(Text(
        'Item added to cart successfully!',
        style: TextStyle(color: Colors.green),
      ));
    } else {
      _showSnackMessage(Text(
        'Failed to add to cart!',
        style: TextStyle(color: Colors.red),
      ));
    }
  }
addToCart(Product product) async {
    List<Map> items =
        await _repository.getLocalByCondition('carts', 'productId', product.id);
    if (items.length > 0) {
      product.quantity = items.first['productQuantity'] + 1;
      return await _repository.updateLocal(
          'carts', 'productId', product.toMap());
    }
    print(items);
    product.quantity = 1;
    return await _repository.saveLocal('carts', product.toMap());
  }

У кого-нибудь есть опыт чего-то вроде этот? Может кто-нибудь помочь мне?

1 Ответ

0 голосов
/ 26 мая 2020

Что вы используете для хранения своих вещей? Локальная база данных или просто список? В любом случае вам нужно сначала проверить, что ваши элементы содержат, затем, если вам нужно обновить только количество, если его нет, вам нужно добавить в качестве нового элемента. Я имею в виду, насколько я понимаю, вы проверяете это с помощью items.length > 0, и это выглядит слишком общим, items.contains('productId') было бы более конкретным c для использования.

...