Inicio » Cursos » Flutter y Laravel Tienda Delivery

Métodos para la gestión del Carrito | Curso Flutter y Laravel Tienda Delivery

Los métodos permitirá dar dinámica a nuestro carrito con funcionalidades como agregar productos, actualizar la cantidad, y vaciar el carrito.

Lección 38: Métodos para la gestión del 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


807 visitas

Curso Flutter y Laravel Tienda Delivery

Curso Flutter y Laravel Tienda Delivery

Descarga el código fuente del proyecto

USD 37.00 67.00


COMPRAR CURSO

Codea App
Codea App FullStack

Perú, México, Colombia, España, Venezuela, Argentina, Bolivia

You Fb Tik Pin

© Todos los derechos reservados Codea App | Cursos de programación | 2020 - 2022