No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Flutter

Curso de Flutter

Alison Jimenez

Alison Jimenez

Implementación de formularios en Flutter

11/26
Recursos

Crear formularios interactivos y validados es esencial para capturar información de manera efectiva. En este contenido, exploraremos cómo implementar campos personalizados, controladores y validaciones en un formulario utilizando Flutter, optimizando así la experiencia del usuario.

¿Cómo añadir campos personalizados al formulario?

  • Los campos requeridos son: nombre, autor, URL de imagen y descripción de la receta.
  • Para cada campo, se utiliza un TextEditingController que permite capturar y almacenar los datos ingresados.
  • La estructura base incluye etiquetas (label) y controladores asignados de manera única para cada campo.

¿Cómo implementar validaciones en los formularios?

  • Se usa un GlobalKey<FormState> para manejar el estado del formulario.
  • Los validadores son funciones asociadas a cada campo, verificando si este está vacío o contiene datos incorrectos.
  • Ejemplo de validación:
    • Si el campo de nombre está vacío, se muestra el mensaje: “Introduzca el nombre de la receta”.
    • En caso contrario, la validación pasa y el formulario continúa.

¿Cómo se conecta la validación con los controladores?

  • Cada campo del formulario recibe su propio controlador y validador.
  • La integración de los validadores requiere modificar la widget personalizada, añadiendo parámetros como:
    • validator: para recibir la función de validación.
    • maxLines: para definir el número máximo de líneas en campos como la descripción.

¿Cómo crear un botón funcional y estilizado?

  • Un botón centrado, implementado con ElevatedButton, maneja el envío del formulario.
  • Antes de procesar la información, se valida que todos los campos estén llenos.
  • En caso de éxito, el formulario se cierra con Navigator.pop.
  • Estilo del botón:
    • Color de fondo, tipografía en negrita y bordes redondeados.
    • Texto descriptivo como “Guardar receta”.

¿Cómo gestionar los campos con múltiples líneas?

  • Se agrega una variable opcional maxLines para manejar campos que requieran varias líneas, como la descripción de la receta.
  • Esto permite ajustar dinámicamente la cantidad de texto visible en el formulario.

¿Cómo verificar que las validaciones funcionan correctamente?

  • Al probar el formulario, los campos vacíos generan mensajes de error específicos.
  • Por ejemplo, si no se completa la URL de imagen, se solicita rellenar dicho campo antes de enviar.

Aportes 8

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Solución a el teclado tapa los fields. ![](https://static.platzi.com/media/user_upload/image-0c9fdda7-b753-42bb-82d0-55738c3f6ffb.jpg)
La verdad que Dart se ve un lenguaje bastante interesante y Flutter pinta muy bien. Les dejo este trucazo para evitar estar usando tanto SizedBox() ente los inputs de nuestro formulario: ![]()![](https://i.imgur.com/PCutx39.png) De esta forma no repetimos código. Luego, como lo que hemos creado es una lista de Widgets al incluirlo dentro de childre: \[], lo que hacemos es usar el spread operator: ...\_buildFormFields(),
Hola, el problema es que dentro del future no se define un padding para que no solape el teclado ``` Future<*void*> \_showButtom(BuildContext context) { *return* showModalBottomSheet( isScrollControlled*:* true, context*:* context, builder*:* (context) *=>* Padding( padding*:* EdgeInsets.only( bottom*:* MediaQuery.of(context).viewInsets.bottom, ), child*:* SizedBox( width*:* MediaQuery.of(context).size.width, height*:* 600, child*:* *const* RecipeForm(), ), ), ); } ```
Necesito ayuda no se porque , pero ahora cuando quiero escribir en el form se cierra el teclado apenas clickeo para escribir . HEEEELPP MEEE !!
Me siento bien , ya que lo hice de la misma forma que esta en el repo Yeeaaah
![](https://static.platzi.com/media/user_upload/image-7674a25a-4c69-4897-9f27-ebf450e16791.jpg)
Me hubiera gustado que el curso tuviera más explicación sobre la teoría , como la diferencia entre Stateless y Statfull Widget , árbol de widgets, una buena estructuración del proyecto carpetas , módulos , vistas y como en este caso mas explicación sobre las GlobalKey de un Widget, Etc Siento que solo estoy replicando el codigo con el video sin entender a fondo los conceptos 🤔
Cambios que agregue para ajustar el modal conforme al teclado del celular ![](https://static.platzi.com/media/user_upload/image-3d985268-e0a4-46b6-a716-1adcc56ce6e6.jpg)![](https://static.platzi.com/media/user_upload/image-c7788290-784d-4821-af55-665f022c4654.jpg)![](https://static.platzi.com/media/user_upload/image-6f54aeac-442d-47ab-8fae-996dc2761e42.jpg)