Fala, Dev!
Conforme apresentado na última aula, podemos estar apresentando a quantidade de itens do carrinho de uma forma bem simples, apenas recuperando a quantidade de itens do carrinho que nós temos! :D
Contudo, caso você queria não apresentar a quantidade por produto, mas sim a quantidade unitária, ex:
Se temos 3 maçãs e 2 mangas, no total apresentado atualmente teremos 2, compreendendo os dois itens do carrinho, mas por outro lado, temos a forma unitária, que seriam 5 itens do carrinho somando as 3 maçãs com as duas mangas.
Para termos este outro resultado, de forma unitária é bem simples! Logo abaixo te apresento como podemos fazer isso:
1 - No nosso CartController eu fiz a criação de um método que nos retorna a quantidade de itens de forma unitária, desta forma:
...
int getCartTotalItems() {
return cartItems.isEmpty
? 0
: cartItems.map((e) => e.quantity).reduce((a, b) => a + b);
}
...* Com o map conseguirmos mapear a lista de itens do carrinho e criar uma nova lista contendo a quantidade de cada item do carrinho;
* Com o reduce somamos todas as quantidades e retornamos o resultado;
* Estamos também verificando com uma condicional ternária se a nossa lista está inicialmente vazia, e se estiver retornamos o zero.
Em seguida adicionei a chamada no nosso Badge e pronto! :D
...
child: Badge(
badgeColor: CustomColors.customContrastColor,
badgeContent: Text(controller.getCartTotalItems().toString(),
style: const TextStyle(
...Com isso teremos a apresentação da quantidade de forma unitária! Espero que tenha gostado. Caso tenha qualquer problema ou dúvida fique à vontade para me enviar uma mensagem aqui. Bons estudos.