Para poder crear un formulario con validaciones en flutter, primero creamos los elementos dentro de la clase.
import 'package:flutter/material.dart';
class LoginForm extends StatefulWidget {
@override
_LoginFormState createState() => _LoginFormState();
}
class _LoginFormState extends State<LoginForm> {
final _formKey = GlobalKey<FormState>();
final _emailController = TextEditingController();
final _passwordController = TextEditingController();
@override
void dispose() {
_emailController.dispose();
_passwordController.dispose();
super.dispose();
}
Después creamos los elementos en el Widget
@override
Widget build(BuildContext context) {
return Form(
key: _formKey,
child: Column(
children: [
TextFormField(
controller: _emailController,
keyboardType: TextInputType.emailAddress,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Por favor, ingresa tu correo electrónico';
}
return null;
},
decoration: InputDecoration(
labelText: 'Correo Electrónico',
),
),
TextFormField(
controller: _passwordController,
obscureText: true,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Por favor, ingresa tu contraseña';
}
return null;
},
decoration: InputDecoration(
labelText: 'Contraseña',
),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: _submitForm,
child: Text('Iniciar Sesión para DevCodeLight'),
),
],
),
);
}
}
Creamos una función para la acción que haya que realizar al pulsar el botón del formulario y los campos estén correctamente validados.
void _submitForm() {
if (_formKey.currentState!.validate()) {
String email = _emailController.text;
String password = _passwordController.text;
print('Email: $email');
print('Password: $password');
}
}
}
Y por último, agrega el formulario en el Widget de la vista dónde quieras usarlo
class LoginFormExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Formulario para DevCodeLight de Inicio de Sesión'),
),
body: Padding(
padding: EdgeInsets.all(16),
child: LoginForm(),
),
);
}
}
