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.