dart_fake_store_api_wrapper 0.0.4 copy "dart_fake_store_api_wrapper: ^0.0.4" to clipboard
dart_fake_store_api_wrapper: ^0.0.4 copied to clipboard

Simplifies Fake Store API queries, ideal for managing product data and shipping.

Dart Fake Store API Wrapper #

pub package GitHub license

Una biblioteca de Dart para interactuar con la Fake Store API. Este paquete proporciona una forma sencilla de realizar operaciones CRUD en productos y carritos de compra.

Características= #

  • Obtener productos: Lista todos los productos disponibles.
  • Obtener un solo producto: Obtiene detalles de un producto por su ID.
  • Enviar productos al carrito: Agrega productos a un carrito de compra.

Instalación #

Agrega la dependencia a tu archivo pubspec.yaml:

dependencies:
  dart_fake_store_api_wrapper: ^0.0.4

Luego, ejecuta:

dart pub get

Uso Básico #

A continuación, se muestra un ejemplo de cómo usar el paquete para obtener productos, obtener un solo producto y enviar productos al carrito.

import 'package:dart_fake_store_api_wrapper/dart_fake_store_api_wrapper.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final _apiWrapper = DartFakeStoreApiWrapper();
  String productsObtained = '';
  String singleProductObtained = '';
  String productAddedToCart = '';

  @override
  void initState() {
    super.initState();
    fetchData();
  }

  Future<void> fetchData() async {
    try {
      // Obtener todos los productos
      final productos = await _apiWrapper.runFetchProducts();
      setState(() {
        productsObtained = 'Productos obtenidos: ${productos.length}';
      });

      // Obtener un producto por ID
      final producto = await _apiWrapper.runFetchSingleProduct(1);
      setState(() {
        singleProductObtained = 'Producto obtenido: ${producto.title}';
      });

      // Enviar un producto al carrito
      final cart = CartEntity(
        userId: 1,
        date: DateTime.now(),
        products: [
          ProductQuantityEntity(
            productId: 1,
            quantity: 2,
          ),
        ],
      );
      final carrito = await _apiWrapper.runSendProductToCart(cart);
      setState(() {
        for (var cart in carrito.products) {
          productAddedToCart =
              'Cantidad de productos enviados al carrito: ${cart.quantity}';
        }
      });
    } catch (e) {
      print(e);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(
              productsObtained,
              style: const TextStyle(fontSize: 16),
            ),
            const SizedBox(height: 20),
            Text(
              singleProductObtained,
              style: const TextStyle(fontSize: 16),
            ),
            const SizedBox(height: 20),
            Text(
              productAddedToCart,
              style: const TextStyle(fontSize: 16),
            ),
          ],
        ),
      ),
    );
  }
}


API #

DartFakeStoreApiWrapper #

runFetchProducts #

Future<List<ProductEntity>> runFetchProducts();

Obtiene la lista de productos disponibles.

runFetchSingleProduct #

Future<ProductEntity> runFetchSingleProduct(int productId);

Obtiene detalles de un solo producto por su ID.

runSendProductToCart #

Future<CartEntity> runSendProductToCart(CartEntity cart);

Agrega un producto al carrito de compra.

runFetchCategories #

Future<List<CategoryEntity>> runFetchCategories();

Lista las categorías disponibles

Modelos #

ProductEntity #

class ProductEntity {
  final int id;
  final String title;
  final double price;
  final String description;
  final String category;
  final double rating;
  final String image;

  ProductEntity({
    required this.id,
    required this.title,
    required this.price,
    required this.description,
    required this.category,
    required this.rating,
    required this.image,
  });
}

Representa un producto con sus detalles.

CartEntity #

class CartEntity {
  final int id;
  final int userId;
  final String date;
  final List<CartProduct> products;

  CartEntity({
    required this.id,
    required this.userId,
    required this.date,
    required this.products,
  });
}

Representa un carrito de compras.

CartProduct #

class CartProduct {
  final int productId;
  final int quantity;

  CartProduct({
    required this.productId,
    required this.quantity,
  });
}

Representa un producto dentro de un carrito de compras.

Tests #

Para ejecutar los tests unitarios, ejecuta el siguiente script:

chmod +x run_all_tests.sh
./run_all_tests.sh

Informe de covertura #

Imagen

Para abrir el test de cobertura, ejecuta el siguiente comando:

open coverage/html/index.html

Contribuir #

Si deseas contribuir a este proyecto, sigue los pasos a continuación:

  • Haz un fork del proyecto.
  • Crea una nueva rama (git checkout -b feature-nueva-funcionalidad).
  • Realiza tus cambios y haz commit (git commit -am 'Añadir nueva funcionalidad').
  • Haz push a la rama (git push origin feature-nueva-funcionalidad). Abre un Pull Request. Asegúrate de que tu código sigue las convenciones de Dart y pasa todas las pruebas existentes.

Licencia #

Este proyecto está licenciado bajo la licencia MIT - mira el archivo LICENSE para más detalles.

2
likes
150
pub points
11%
popularity

Publisher

unverified uploader

Simplifies Fake Store API queries, ideal for managing product data and shipping.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

dartz, http

More

Packages that depend on dart_fake_store_api_wrapper