Creación de Formularios y Botones Interactivos en Aplicaciones
Clase 10 de 26 • Curso de Flutter
Contenido del curso
Widgets en Flutter
Manejo de Recursos y Formularios
Navegación y APIs
Gestión de Estados
- 15

Implementación de ListView con FutureBuilder para APIs en Flutter
08:49 min - 16

Manejo de Errores y Cargas en Aplicaciones con API
07:04 min - 17

Creación de modelos de datos en Flutter con Dart
09:43 min - 18

Uso de Provider para Gestión de Estado en Flutter
14:07 min - 19

"Gestión de Favoritos en Aplicaciones con Stateful Widgets"
30:47 min - 20

Detalles de Recetas en Flutter: Implementación y Visualización
05:08 min
Experiencia de Usuario
Publicación de Apps
Resumen
Crear interfaces intuitivas y atractivas es esencial para mejorar la experiencia del usuario en una aplicación. En este artículo, exploraremos cómo implementar botones interactivos y formularios personalizables, desde la conceptualización hasta la personalización avanzada, utilizando widgets en Flutter.
¿Cómo implementar un botón con acción personalizada?
- Usa un Floating Action Button: Este widget se utiliza para acciones principales. Puedes asignarle un
onPressedque ejecutará una función cuando se presione. - Personalización del botón:
- Color: Define colores que resalten, como un naranja de tu paleta.
- Íconos: Agrega íconos clicables y coloréales, por ejemplo, en blanco, para diferenciarlos del fondo.
Código básico:
FloatingActionButton( onPressed: () { // Lógica a ejecutar }, backgroundColor: Colors.orange, child: Icon(Icons.add, color: Colors.white), ),
¿Cómo mostrar un formulario en un modal?
- ShowModalBottomSheet: Permite mostrar un contenedor flotante desde la parte inferior de la pantalla.
- Configuración inicial:
- Altura dinámica: Usa
MediaQuery.of(context).sizepara adaptar el tamaño al ancho de la pantalla. - Decoración: Aplica colores, contenedores y texto para estructurar el contenido.
- Altura dinámica: Usa
Ejemplo:
void showModal(BuildContext context) { showModalBottomSheet( context: context, builder: (BuildContext context) { return Container( height: MediaQuery.of(context).size.height * 0.5, color: Colors.white, child: Center(child: Text('Hola, aquí va tu formulario')), ); }, ); }
¿Cómo estructurar un formulario con campos reutilizables?
- Crea una clase de formulario: Utiliza un
StatelessWidgetpara estructurar tu formulario. - Formulario dinámico:
- Usa
Formcon una clave (formKey) para manejar validaciones y control de campos. - Estructura los campos en columnas para una alineación vertical.
- Usa
Ejemplo de formulario básico:
class RecipeForm extends StatelessWidget { final _formKey = GlobalKey<FormState>(); @override Widget build(BuildContext context) { return Padding( padding: EdgeInsets.all(8.0), child: Form( key: _formKey, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text('Nueva Receta', style: TextStyle(fontSize: 24, color: Colors.orange)), SizedBox(height: 16), buildTextField('Nombre de la receta'), ], ), ), ); } Widget buildTextField(String label) { return TextFormField( decoration: InputDecoration( labelText: label, labelStyle: TextStyle(color: Colors.orange), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: BorderSide(color: Colors.orange, width: 1), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: BorderSide(color: Colors.orange, width: 1.5), ), ), ); } }
¿Cómo personalizar widgets para reutilización?
- Define widgets específicos: Crea widgets para campos de texto que incluyan estilos y validaciones comunes.
- Propiedades importantes:
label: Texto para identificar el campo.InputDecoration: Define bordes, colores y estilos.BorderRadius: Redondea los bordes para un diseño más moderno.
Widget de campo reutilizable:
Widget buildCustomTextField(String label, String fontFamily) { return TextFormField( decoration: InputDecoration( labelText: label, labelStyle: TextStyle(fontFamily: fontFamily, color: Colors.orange), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: BorderSide(color: Colors.orange, width: 1), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: BorderSide(color: Colors.orange, width: 1.5), ), ), ); }
Agrega campos al formulario:
Column( children: [ buildCustomTextField('Nombre del autor', 'QuickSand'), SizedBox(height: 16), buildCustomTextField('Ingredientes', 'QuickSand'), SizedBox(height: 16), buildCustomTextField('Imagen URL', 'QuickSand'), ], )