Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'Construyendo un formulario con validaciones' page issue #609

Open
pacomgh opened this issue May 23, 2022 · 0 comments
Open

'Construyendo un formulario con validaciones' page issue #609

pacomgh opened this issue May 23, 2022 · 0 comments

Comments

@pacomgh
Copy link

pacomgh commented May 23, 2022

Page URL: https://flutter-es.io/docs/cookbook/forms/validation.html
Page source: https://github.com/flutter-es/website/tree/dash/src_es/docs/cookbook/forms/validation.md

No es precisamente un bug en la página pero vi que hay algunos widgets deprecados mientras estaba haciendo esta práctica(No sabia por donde comentar eso).

El código que he hecho es el siguiente en donde están algunas cosas corregidas como el botón, el snackbar y algunas otras; además, agregue un icono y estilos al textformfield para que se vea como los diseños más recientes de android.

El código con correcciones esta subido en este repositorio:
Form con validaciones

Anexo el código que he creado y complementado.

código
import 'package:flutter/material.dart';
import 'dart:ui';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);

@OverRide
Widget build(BuildContext context) {
final appTitle = 'Mi primera app en flutter';

return MaterialApp(
title: appTitle,
home: Scaffold(
appBar: AppBar(
title: Text(appTitle),
),
body: MiForm(),
),
);
}
}

//widget del form
class MiForm extends StatefulWidget {
@OverRide
MiFormState createState() {
return MiFormState();
}
}

//esta clase contendra los datos relacionados al formulario
class MiFormState extends State{
//clave identificación del widget, con esta validamos el form
final _formKey = GlobalKey();

@OverRide
Widget build(BuildContext context) {
//creamos el form usando el key que creamos antes
return Form(
key: _formKey,
child: Container(
padding: EdgeInsets.symmetric(horizontal: 15),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
TextFormField(
decoration: const InputDecoration(
labelText: 'Nombre',
hintText: 'Ingresa tu nombre',
icon: Icon(Icons.person)
),
validator: (value){
if(value!.isEmpty)
return "Por favor ingresa algún texto";
}
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.blue,
onPrimary: Colors.white,
elevation: 8.0,
padding: EdgeInsets.symmetric(vertical: 15.0),
),
onPressed: (){
//devuelve true si el formulario es valido
if(_formKey.currentState!.validate()){
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text("Formulario valido")));
}
else
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Algún campo esta vacío")));
},
child: Text("Enviar"),
),
)
]
),
)
);
}
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant