Introducci贸n a Flutter y Dart
驴Vale la pena Aprender Flutter?
Introducci贸n a Flutter y Dart
Estructura B谩sica de una Aplicaci贸n Flutter
Sintaxis B谩sica de Dart
Widgets en Flutter
驴Qu茅 son los Widgets en Flutter y C贸mo Funcionan?
Widgets B谩sicos en Flutter
驴C贸mo estructurar pantallas en Flutter con TabBar?
C贸mo Personalizar Widgets en Flutter
Manejo de Recursos y Formularios
Manejo de Assets en Flutter: Im谩genes
Formularios en Flutter
Implementaci贸n de formularios en Flutter
Navegaci贸n y APIs
Navegaci贸n entre Pantallas en Flutter
Crea una API en Segundos con Mockoon
Conexi贸n a APIs en Flutter
Gesti贸n de Estados
C贸mo Usar ListView en Flutter
Manejo de Estados de Carga y Errores en Flutter
Gesti贸n del Estado con Provider en Flutter
C贸mo Usar la Librer铆a Provider en Flutter
Gesti贸n del Estado StatefulWidget en Flutter
StatefulWidget en Flutter
Experiencia de Usuario
Flujo de una Aplicaci贸n Flutter
Animaciones en Flutter
Internacionalizaci贸n y Accesibilidad en Flutter
Publicaci贸n de Apps
驴C贸mo hacer APK en Flutter?
C贸mo crear una cuenta de desarrollador de Google Play
驴C贸mo subir una aplicaci贸n Flutter a Google Play?
No tienes acceso a esta clase
隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera
Alison Jimenez
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.
onPressed
que ejecutar谩 una funci贸n cuando se presione.FloatingActionButton(
onPressed: () {
// L贸gica a ejecutar
},
backgroundColor: Colors.orange,
child: Icon(Icons.add, color: Colors.white),
),
MediaQuery.of(context).size
para adaptar el tama帽o al ancho de la pantalla.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')),
);
},
);
}
StatelessWidget
para estructurar tu formulario.Form
con una clave (formKey
) para manejar validaciones y control de campos.class RecipeForm extends StatelessWidget {
final _formKey = GlobalKey();
@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),
),
),
);
}
}
label
: Texto para identificar el campo.InputDecoration
: Define bordes, colores y estilos.BorderRadius
: Redondea los bordes para un dise帽o m谩s moderno.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),
),
),
);
}
Column(
children: [
buildCustomTextField('Nombre del autor', 'QuickSand'),
SizedBox(height: 16),
buildCustomTextField('Ingredientes', 'QuickSand'),
SizedBox(height: 16),
buildCustomTextField('Imagen URL', 'QuickSand'),
],
)
Aportes 10
Preguntas 1
驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?