➜ Carrito de Compra: Icono de notificación
Implementación del Icono de Notificación para el Carrito de Compras | En esta lección aprenderás a implementar un icono interactivo de carrito de compras con una notificación visual que indica la cantidad de ítems en el carrito. Utilizaremos Provider para gestionar el estado del carrito y actualizar dinámicamente el número de productos que contiene.
En esta lección aprenderás a implementar un icono interactivo de carrito de compras con una notificación visual que indica la cantidad de ítems en el carrito. Utilizaremos Provider
para gestionar el estado del carrito y actualizar dinámicamente el número de productos que contiene. También configuraremos una navegación hacia la pantalla del carrito al hacer clic en el icono.
Pasos para Implementar el Icono de Notificación:
1. Creación de la Clase CartIcon
La clase CartIcon
es un widget sin estado (StatelessWidget
) que representará el icono del carrito de compras y la notificación de cantidad.
dart
class CartIcon extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Consumer<CartProvider>(
builder: (_, cart, __) => Stack(
children: [
2. Uso de Consumer
para Actualizar el Estado del Carrito
Utilizamos el widget Consumer
para escuchar cambios en el estado del carrito desde el CartProvider
. Esto asegura que cada vez que el usuario añada o elimine productos, el número de ítems en la notificación se actualice automáticamente.
dart
return Consumer<CartProvider>(
builder: (_, cart, __) => Stack( // Escucha los cambios en el carrito
children: [
3. Icono del Carrito y Navegación a la Pantalla del Carrito
El IconButton
muestra el icono del carrito de compras y permite la navegación hacia la pantalla del carrito (PantallaCart
) cuando se hace clic en él.
dart
IconButton(
onPressed: () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (_) => PantallaCart())); // Navegación a la pantalla del carrito
},
icon: Icon(Icons.shopping_cart)),
4. Posicionamiento y Estilo de la Notificación de Ítems
Se usa Positioned
para colocar la notificación en la esquina superior derecha del icono del carrito. Si el carrito tiene ítems (cart.totalItems > 0
), se muestra un contenedor rojo con el número de ítems dentro, de lo contrario, el contenedor estará vacío.
dart
Positioned(
right: 5,
top: 5,
child: cart.totalItems > 0
? Container(
padding: EdgeInsets.all(3),
decoration: BoxDecoration(
color: Colors.red, // Fondo rojo para la notificación
borderRadius: BorderRadius.circular(10)),
constraints: const BoxConstraints(
minWidth: 10,
minHeight: 5
),
child: Text(
cart.totalItems.toString(), // Mostrar el número de ítems
style: TextStyle(color: Colors.white), // Texto en blanco
),
)
: Container()) // Contenedor vacío si no hay ítems
],
),
);
}
}
Explicación del Código:
-
Consumer<CartProvider>
:- Este widget escucha los cambios en el estado del carrito. Si el número de ítems cambia, la interfaz se actualiza automáticamente.
-
Stack
:- Permite superponer widgets. En este caso, superponemos el icono del carrito y la notificación de cantidad.
-
IconButton
:- Muestra el icono del carrito de compras y permite la navegación a la pantalla de detalles del carrito cuando se hace clic.
-
Positioned
:- Posiciona la notificación de cantidad en la esquina superior derecha del icono del carrito.
-
Condición
cart.totalItems > 0
:- Si el carrito contiene ítems, muestra el número de productos en un círculo rojo. Si no hay ítems, no se muestra nada.
2117 visitas
Capítulo 12 – Carrito de Compra: Lista de Items »
Descarga el código del proyecto
Descarga el código fuente del proyecto adquiriendo el curso completo
Comprar