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 :
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
Descarga el código fuente del proyecto
USD 37.00 67.00
© Todos los derechos reservados Codea App | Cursos de programación | 2020 - 2022