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
- Instala Flutter y confirma que la terminal muestre una versión estable.
- Crea el proyecto:
flutter create ferreteria_app. Abre la carpeta y ejecutaflutter runen un emulador o un teléfono conectado. - Deja visible el archivo
lib/main.dart. No agregues dependencias: el ejemplo usa solo widgets y lógica integrada enDart. - Reemplaza el contenido de
main()por una versión que inicialiceMaterialAppy muestreInicioScreen. Deja la claseInicioScreenen el mismo archivo mientras haces la prueba. - Crea
lib/pedido.dartconflutter 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
- Registra cinco productos y ejecuta tres pedidos: uno válido, uno con stock insuficiente y uno con cantidad cero.
- Pide a dos vendedores registrar los mismos pedidos y anota si entienden el estado mostrado y cuánto tardan.
- Comprueba que el texto exportado incluya fecha, producto, cantidad, observación y total reservado.
- 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.
