carrito_page.dart 3.6 KB
Newer Older
yenisleydi committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:primer_practica/src/providers/carrito_providers.dart';
import 'package:primer_practica/src/models/carrito_model.dart';

class CarritoPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var carritoProvider = Provider.of<CarritoProvider>(context);

    return Scaffold(
      appBar: AppBar(
        title: Text('Carrito'),
      ),
      body: Column(
        children: [
          Expanded(
            child: ListView.builder(
              itemCount: carritoProvider.carrito.length, // Número de elementos en el carrito
              itemBuilder: (context, index) {
                final item = carritoProvider.carrito[index];
                return CarritoItemWidget(item: item); // Construte los elementos
              },
            ),
          ),
          Padding(
            padding: const EdgeInsets.all(20.0),
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Text(
                  '\$ ${carritoProvider.totalPrecio.toStringAsFixed(2)}', // Total de todos los articulos
                  style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700),
                ),
                ElevatedButton(
                  onPressed: () {

                  },
                  child: Text('COMPRAR'),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

class CarritoItemWidget extends StatelessWidget {
  final CarritoModel item;

  const CarritoItemWidget({Key? key, required this.item}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    var carritoProvider = Provider.of<CarritoProvider>(context, listen: false);

    return Card(
      margin: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
      child: Padding(
        padding: const EdgeInsets.all(30.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(
              item.articulo.nombre, // Muestra el nombre del artículo
              style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
            ),
            SizedBox(height: 15),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Text('Precio: \$${item.precio.toStringAsFixed(2)}'), // Muestra el precio del artículo
                Row(
                  children: [
                    IconButton(
                      icon: Icon(Icons.remove),
                      onPressed: () {
                        if (item.cantidad > 1) {
                          carritoProvider.actualizarArticulo(item, item.cantidad - 1); // Disminuye la cantidad del artículo
                        }
                      },
                    ),
                    Text('${item.cantidad}'),
                    IconButton(
                      icon: Icon(Icons.add),
                      onPressed: () {
                        carritoProvider.actualizarArticulo(item, item.cantidad + 1); // Aumenta la cantidad del artículo
                      },
                    ),
                  ],
                ),
                Text('Total: \$${(item.precio * item.cantidad).toStringAsFixed(2)}'), // Muestra el total por artículo
              ],
            ),
            IconButton(
              icon: Icon(Icons.delete, color: Colors.red),
              onPressed: () {
                carritoProvider.eliminarDelCarrito(item);
              },
            ),
          ],
        ),
      ),
    );
  }
}