David Melendez
Luis Jaramillo
Construir formularios en Flutter es una de las habilidades más útiles cuando trabajas con apps móviles, porque toda interacción real con el usuario empieza por capturar datos. Aquí aprenderás a crear un formulario para registrar recetas usando un Floating Action Button, un modal bottom sheet y widgets personalizadas para los campos.
La idea es simple: tocar un botón flotante, abrir un panel inferior y mostrar un formulario estilizado con la paleta de la app. Y lo interesante es que cada pieza es reutilizable.
¿Cómo se crea un Floating Action Button en Flutter?
El FloatingActionButton es la widget que da ese efecto elevado y circular típico de las apps de Material Design. Lo usamos como punto de entrada al formulario [01:00].
Para configurarlo necesitas tres cosas básicas:
onPressed, que define la función a ejecutar al tocarlo.Icon blanco que contraste con el fondo.Dejas el onPressed vacío al inicio y luego conectas la función que abre el formulario. Así separas la apariencia de la lógica.
¿Qué hace el onPressed en un FloatingActionButton? Es el callback que se ejecuta cuando el usuario toca el botón. Allí defines la acción, como abrir un modal o navegar a otra pantalla.
¿Cómo mostrar un formulario con showModalBottomSheet?
Para que el formulario aparezca desde abajo, declaras una función de tipo Future<void> llamada showButton que recibe un BuildContext y retorna un showModalBottomSheet [02:15].
Dentro del modal pasas un Container con altura de 500 píxeles y color blanco. El detalle clave es el ancho: por defecto el contenedor no ocupa toda la pantalla, así que usas MediaQuery.of(context).size.width para que se extienda completo [03:30].
Luego, en el onPressed del botón flotante, llamas a showButton(context) pasándole el contexto actual. Sin ese contexto, Flutter no sabe en qué punto del árbol de widgets ubicar el modal.
¿Cómo se estructura una clase de formulario reutilizable?
La buena práctica es crear una clase aparte, en este caso RecipeForm, como StatelessWidget para mantener el código organizado [05:00].
Dentro retornas un widget Form con una propiedad fundamental: key. El formKey permite acceder al estado del formulario y validar todos los campos desde un solo punto.
La estructura interna sigue este orden:
Padding con EdgeInsets.all(8) para dar respiración al contenido.Column con crossAxisAlignment: CrossAxisAlignment.start para alinear desde arriba.Text de título como "A new Recipe" con TextStyle en color naranja y fontSize: 24.Para mostrar este formulario dentro del modal, simplemente reemplazas el Container de prueba por RecipeForm().
¿Para qué sirve el formKey en un formulario de Flutter? Es la llave que conecta el
Formcon su estado. Te permite validar campos, guardar valores y controlar el formulario desde fuera de los widgets hijos.
¿Cómo crear un widget personalizado para campos de texto?
Aquí viene lo interesante: en vez de repetir estilos en cada campo, creas un método buildTextField que recibe parámetros y retorna un TextFormField configurado [07:20].
El widget recibe un String label requerido y aplica una decoración consistente. Esto te ahorra decenas de líneas cuando tienes varios campos: nombre de receta, autor, ingredientes, contenido.
La decoración se arma con InputDecoration e incluye:
labelText con el texto recibido por parámetro.labelStyle con fontFamily: 'Quicksand' y color naranja.border con OutlineInputBorder y BorderRadius.circular(10) para esquinas redondeadas.focusedBorder con BorderSide naranja, mismo radio circular y width: 1.La propiedad focusedBorder es la que crea ese efecto donde el label sube y se integra al borde cuando tocas el campo. Es un detalle pequeño que hace que la app se sienta pulida.
¿Cómo usar el widget personalizado en el formulario?
Dentro de la Column del RecipeForm, agregas un SizedBox(height: 16) para separar el título del primer campo [10:45]. Luego llamas a buildTextField(label: 'Recipe name') y listo.
A partir de ahí, replicas la llamada cambiando solo el label para crear los campos de autor, imagen, ingredientes y contenido. Una sola widget, múltiples campos coherentes.
Conceptos clave que aparecen en el flujo
Algunos términos que vale la pena tener claros mientras construyes este formulario:
¿Qué campo agregarás primero a tu formulario de recetas? Cuéntame en los comentarios cómo personalizaste tu buildTextField.
David Melendez
Luis Jaramillo
Carlos Orjuela
Abraham Gonzalez
Franklin Zelaya
Johan Humberto Castillo rios
Yamid Horacio Rodríguez
Carlos Orjuela
Jose Miguel Lopez
Luis Marquez
Platzi Team
Eleuterio Bonilla
JUAN ALEJANDRO PEREZ BERMUDEZ
Axell Solis
Diego Andrés Lopez Rodriguez
Diego Andrés Lopez Rodriguez
Diego Andrés Lopez Rodriguez
Ismael Pérez Mena
Camilo Jiménez
Yeremi Perez Hurtado
Ivan Manrique
Julian Mauricio Perez Mora
Victor Rodrigo Muñoz Fernandez
Angelina Jiménez
Salvador Ambrosio
Daniel Cardenas Parra
Platzi, seria bueno que los cursos expliquen mas las cosas y no solo ver a los profesores codear y codear, colocando cosas solo porque si.
No va a suceder, esto es lo que mucha gente critica y no lo han cambiado.
ADICIONAL A ESO
JAJAJAJAJAJAJAJAJAJA
muy linda la profe, pero siento que algunos cursos como este no enseñar en si!! solo explicar como hacer el proyecto en cuestion, pero puede tener un orden y una estructura mejor el curso explicando de otra forma, en las clases pasadas fue lo mismo solo dice que poner y colo lo pintamos y color pero no explica ensi para que sirver ciertas propiedades o que usos se les puede dar o usar!! siento que la calidad de los cursos a bajodo.
Le puse icono UwU
Y así me va quedando
asi va quedando la app profe
ese esta fenomenal, tambien soy maracucho jaja
A modo de recomendación, es un poco difícil seguir la clase por el banner de sugerencias. Tapa todo.
es desesperante, que aparezca todo el tiempo las sugerencias de codigo...
i feel you
Un avance de como esta quedando el formulario
Los controladores en Flutter, como el TextEditingController, son fundamentales para manejar el texto en los campos de entrada. Su función principal es facilitar la lectura y escritura del contenido de un TextField. Permiten obtener el texto ingresado, modificarlo y escuchar cambios en tiempo real. Esto es crucial para implementar formularios interactivos, donde los datos del usuario deben ser capturados y validados antes de ser procesados. Utilizar controladores mejora la gestión del estado y la funcionalidad general de la aplicación.
Mockoon es una herramienta de simulación de APIs que permite crear entornos locales para pruebas. Sus principales características incluyen:
Estas características hacen de Mockoon una herramienta eficaz para el desarrollo y prueba de aplicaciones en Flutter, al facilitar la conexión con APIs simuladas.
No sé si este curso ya tuvo actualización, pero, la aplicación estaba fallando debido a que, al inicio configuramos 4 tabs, pero en versiones más recientes de Dart/Flutter, si no se tienen las 4 ya hechas, es decir, no hace match el length con el total de tabs, ocasiona un error, se soluciona cambiando temporalmente el lenght conforme se vayan agregando tabs.
Estoy siguiendo el curso al pie de la letra, incluso al final copié y pegué los archivos de la sección de Recursos y aún así el botón no realiza ninguna acción cuando lo presiono. No sé qué pasa, qué podría revisar para encontrar el error?
envia el error
Me pasa lo mismo camilo, si lograste solucionarlo porfa comparte como lo solucionaste.
Profe me gusta cuando dices listo! 😍
Mi humilde aporte:)