FakeStore Fase3 Mandrade
Un paquete Flutter profesional que implementa Clean Architecture para interactuar con la Fake Store API. Ideal para prototipado rápido, aprendizaje y desarrollo de aplicaciones e-commerce.
✨ Características
✅ Clean Architecture - Código mantenible y testeable
✅ API Simple - Una sola clase FakeStoreService para todo
✅ Completamente tipado - Entidades seguras con null safety
✅ Manejo de errores - Excepciones descriptivas
✅ Testing incluido - Suite completa de pruebas unitarias
✅ Documentación completa - Métodos y clases documentados
🛍️ API Endpoints
| Categoría | Endpoints | Descripción |
|---|---|---|
| Productos | getAllProducts() |
Lista completa de productos |
getProduct(id) |
Detalles de producto específico | |
getCategories() |
Todas las categorías | |
getProductsInCategory() |
Productos por categoría | |
| Usuarios | getAllUsers() |
Lista completa de usuarios |
getUser(id) |
Detalles de usuario específico | |
| Carritos | getAllCarts() |
Lista completa de carritos |
getCart(id) |
Detalles de carrito específico | |
getUserCarts(userId) |
Carritos de un usuario |
📦 Instalación
dependencies:
fakestore_fase3_mandrade: ^1.0.0
🚀 Uso Rápido
import 'package:fakestore_fase3_mandrade/fakestore_fase3_mandrade.dart';
// Crear el servicio
final service = FakeStoreService();
// Obtener productos
final products = await service.getAllProducts();
print('${products.length} productos disponibles');
// Obtener producto específico
final product = await service.getProduct(1);
print('${product.title} - \$${product.price}');
// Obtener categorías
final categories = await service.getCategories();
print('Categorías: ${categories.join(", ")}');
// Obtener usuarios
final users = await service.getAllUsers();
print('${users.length} usuarios registrados');
// Obtener carritos
final carts = await service.getAllCarts();
print('${carts.length} carritos activos');
// Limpiar recursos
service.dispose();
📊 Ejemplos Detallados
🛍️ Productos
// Lista con filtros
final products = await service.getAllProducts(limit: 10, sort: 'desc');
// Categorías disponibles
final categories = await service.getCategories();
// ['electronics', 'jewelery', 'men\'s clothing', 'women\'s clothing']
// Filtrar por categoría
final electronics = await service.getProductsInCategory('electronics');
// Producto específico
final product = await service.getProduct(1);
print('${product.title} - \$${product.price}');
print('Rating: ${product.rating.rate}/5 (${product.rating.count} reviews)');
👥 Usuarios
// Lista de usuarios
final users = await service.getAllUsers(limit: 5);
// Usuario específico
final user = await service.getUser(1);
print('${user.name.firstName} ${user.name.lastName}');
print('Email: ${user.email}');
print('Ciudad: ${user.address.city}');
🛒 Carritos
// Todos los carritos
final carts = await service.getAllCarts();
// Carrito específico
final cart = await service.getCart(1);
print('Carrito del usuario: ${cart.userId}');
print('Total productos: ${cart.totalProducts}');
// Carritos de un usuario
final userCarts = await service.getUserCarts(1);
print('Usuario tiene ${userCarts.length} carritos');
// Iterar productos del carrito
for (final product in cart.products) {
print('Producto ${product.productId}: ${product.quantity} unidades');
}
🏛️ Arquitectura
Implementa Clean Architecture con tres capas:
- 🎯 Domain: Entidades puras (
ProductEntity,UserEntity,CartEntity) - 📡 Data: DTOs y conexiones HTTP
- 🎨 Presentation:
FakeStoreServicecomo fachada simple
📱 Aplicación de Ejemplo
Incluye una aplicación completa en example/ que demuestra todos los métodos del paquete con UI moderna y manejo de estados.
cd example
flutter pub get
flutter run
📚 Documentación
Creado por Marco Andrade - GitHub
Libraries
- data/datasources/fake_store_remote_datasource
- data/models/cart_dto
- data/models/product_dto
- data/models/user_dto
- data/repositories/cart_repository_impl
- data/repositories/product_repository_impl
- data/repositories/user_repository_impl
- domain/entities/cart_entity
- domain/entities/product_entity
- domain/entities/user_entity
- domain/repositories/cart_repository
- domain/repositories/product_repository
- domain/repositories/user_repository
- domain/usecases/cart_usecases
- domain/usecases/product_usecases
- domain/usecases/user_usecases
- fakestore_fase3_mandrade
- Paquete Flutter para interactuar con la Fake Store API
- presentation/fake_store_service