➜ Métodos para la gestión del Carrito
Implementación de los métodos para la clase Carrito Flutter | Los métodos permitirá dar dinámica a nuestro carrito con funcionalidades como agregar productos, actualizar la cantidad, y vaciar el carrito.
Después de implementar la clase carrito necesitamos los métodos necesarios para gestionar el Carrito de Compra como :
- Insertar un item
- Sumar item
- Restar item
- Vaciar el carrito
- Subtotal
- Impuesto
- Total, etc..
Para ello creamos un nuevo archivo en la ruta carrito/CarritoCompra.dart. Ahora veamos la implementación de los métodos
import 'package:arequipalocal/carrito/Carrito.dart';
import 'package:flutter/material.dart';
class CarritoCompra extends ChangeNotifier{
  Map<String, Carrito> _items ={};
  Map<String, Carrito> get items{
    return {..._items};
  }
  int get cantidadItems{
    return _items.length;
  }
  double get subtotal{
    var _subtotal=0.0;
    _items.forEach((key,Carrito)=> _subtotal += Carrito.precio * Carrito.cantidad);
    return _subtotal;
  }
  double get impuesto{
    var _impuesto=0.0;
    _impuesto = this.subtotal * 0.18;
    return _impuesto;
  }
  double get total{
    var _total=0.0;
    _total = this.subtotal * 1.18;
    return _total;
  }
  void agregarItem(String _id,String _nombre,  double _precio, String _unidad,  String _urlfoto){
    if(_items.containsKey(_id)){
      //update
      _items.update(
        _id,
          (old) => Carrito(
            id:old.id,
            nombre: old.nombre,
            precio: old.precio,
            unidad: old.unidad,
            urlfoto: old.urlfoto,
            cantidad: old.cantidad + 1
          )
      );
    }else{
      //agregar
      _items.putIfAbsent(
          _id,
              () => Carrito(
              id:_id,
              nombre: _nombre,
              precio: _precio,
              unidad: _unidad,
              urlfoto: _urlfoto,
              cantidad: 1
          )
      );
    }
  }
  void incrementarCantidad(String _id){
    if(_items.containsKey(_id)){
      _items.update(
          _id,
              (old) => Carrito(
              id:old.id,
              nombre: old.nombre,
              precio: old.precio,
              unidad: old.unidad,
              urlfoto: old.urlfoto,
              cantidad: old.cantidad + 1
          )
      );
    }
  }
  void decrementarCantidad(String _id){
    if(!_items.containsKey(_id)) return;
    if(_items[_id].cantidad>1){
      _items.update(
          _id,
              (old) => Carrito(
              id:old.id,
              nombre: old.nombre,
              precio: old.precio,
              unidad: old.unidad,
              urlfoto: old.urlfoto,
              cantidad: old.cantidad - 1
          )
      );
    }else{
      _items.remove(_id);
    }
  }
  void removerItems(){
    _items = {};
  }
  void removerItem(String _id){
    _items.remove(_id);
  }
}
Fin
2199 visitas
Capítulo 39 – Implementación de la Pantalla Inicio »
Descarga el código del proyecto
Descarga el código fuente del proyecto adquiriendo el curso completo
Comprar