← Volver a tutoriales

Flutter para registrar pedidos y stock en ferreterías sin servidor

Crea un MVP de Flutter para que vendedores registren pedidos, reserven stock y lo entreguen a WhatsApp Web, con una validación práctica y un siguiente paso medible.

Una ferretería puede perder ventas cuando el encargado debe escribir el pedido en una libreta, revisar el stock en otra hoja y avisar al proveedor por teléfono. Un MVP de Flutter puede resolver ese cuello de botella con una pantalla simple para registrar pedidos y reservar existencias. La app no necesita una base de datos propia: puede exportar el pedido como texto para pegarlo en WhatsApp Web o imprimirlo.

Este enfoque sirve para equipos que ya tienen un inventario en Excel o Google Sheets y necesitan probar si un registro más ordenado mejora el trabajo diario. No conviene construirlo si la operación requiere cobros en línea, control simultáneo de varios vendedores o sincronización en tiempo real; para esos casos hacen falta backend, cuentas de usuario y una base de datos.

1. Prepara el proyecto

  1. Instala Flutter y confirma que la terminal muestre una versión estable.
  2. Crea el proyecto: flutter create ferreteria_app. Abre la carpeta y ejecuta flutter run en un emulador o un teléfono conectado.
  3. Deja visible el archivo lib/main.dart. No agregues dependencias: el ejemplo usa solo widgets y lógica integrada en Dart.
  4. Reemplaza el contenido de main() por una versión que inicialice MaterialApp y muestre InicioScreen. Deja la clase InicioScreen en el mismo archivo mientras haces la prueba.
  5. Crea lib/pedido.dart con flutter create -t lib/pedido.dart ferreteria_app. El comando debe crear el archivo sin sobrescribir otros.

2. Guarda el inventario y el pedido

En pedido.dart, define un modelo con producto, cantidad y stock disponible. La reserva solo será posible si la cantidad solicitada no supera el stock. Para probar la idea, guarda los productos y el pedido en variables de memoria; al cerrar la app se perderán, y esa limitación debe quedar documentada.

En main.dart, crea PedidoScreen con tres campos: producto, cantidad y observaciones. Usa TextFormField para validar que la cantidad sea un número positivo. Al pulsar Guardar pedido, verifica que exista un producto con el mismo nombre, que el stock sea suficiente y que la cantidad solicitada no sea mayor. Si una validación falla, muestra el mensaje con SnackBars y no modifiques el inventario.

Si el pedido es válido, resta la cantidad al stock y construye un texto con fecha, producto, cantidad, observación y total reservado. En una prueba real, reemplaza el texto por los datos que ya entrega tu hoja de cálculo; no inventes una API de inventario.

3. Exporta el pedido sin tocar WhatsApp desde la app

Flutter no puede abrir WhatsApp de forma fiable en todas las plataformas y versiones. Para no depender de una función inventada, usa el texto generado como salida del formulario. En un computador, copia el texto y ábrelo en WhatsApp Web; en un celular, usa el menú Compartir de Android o iOS. Esta separación mantiene la app pequeña y evita prometer una integración que no has probado.

Para una primera validación, agrega un botón que copie el texto al portapapeles con Clipboard y Navigator. Si el dispositivo no permite copiar, muestra el texto dentro de la pantalla. Guarda también una copia local mediante el Bloc de notas de Windows o TextEdit de macOS; no uses un archivo con nombre fijo en /tmp, porque su existencia y permisos varían entre sistemas.

Ejemplo concreto

El encargado abre la app, escribe “tornillo 1 pulgada”, cantidad “20” y observa “pedido para cliente Juan”. Si hay 35 unidades, la app resta 20, muestra el stock restante y genera un texto listo para pegar en WhatsApp Web. Si escribe “50”, la app no descuenta nada y muestra “stock insuficiente”. Este caso prueba la regla de negocio sin pedir una base de datos ni una automatización externa.

Errores frecuentes

  • Restar stock antes de comprobar que el producto existe y que la cantidad es positiva.
  • Comparar nombres con mayúsculas, espacios o tildes diferentes; normaliza los valores o usa un código de producto.
  • Confundir una reserva con una venta confirmada; muestra claramente el estado del pedido.
  • Guardar todo en memoria y olvidar que al reiniciar la app se pierde. Para una prueba de un día puede bastar; para operar varios días, conecta una hoja o una base de datos.
  • Usar WhatsApp como si fuera una API estable. Empieza con copia manual y valida el flujo con vendedores reales.

Prueba y siguiente paso

  1. Registra cinco productos y ejecuta tres pedidos: uno válido, uno con stock insuficiente y uno con cantidad cero.
  2. Pide a dos vendedores registrar los mismos pedidos y anota si entienden el estado mostrado y cuánto tardan.
  3. Comprueba que el texto exportado incluya fecha, producto, cantidad, observación y total reservado.
  4. Si la prueba funciona durante una jornada, conecta el inventario a Google Sheets o a una base de datos real. Si no, corrige los campos y repite la prueba.

Con esto tienes un primer producto usable, medible y limitado a una tarea concreta. La decisión siguiente no es agregar más pantallas, sino comprobar si el registro reduce errores y tiempo en la operación.

Advertencia práctica: no almacenes nombres de clientes, teléfonos ni datos de pago en este prototipo. Limita el acceso al dispositivo y elimina los datos de prueba antes de usar la app con información real.